Skip to content

Commit 844a1a7

Browse files
committed
2/10 ICPC
1 parent 3664316 commit 844a1a7

18 files changed

+3990
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
#include <bits/stdc++.h>
2+
// #include <ext/pb_ds/assoc_container.hpp>
3+
// #include <ext/pb_ds/TREE_policy.hpp>
4+
// #include <ext/pb_ds/detail/standard_policies.hpp>
5+
6+
// using namespace __gnu_pbds;
7+
// using namespace __gnu_cxx;
8+
using namespace std;
9+
#define FIO \
10+
ios_base::sync_with_stdio(0); \
11+
cin.tie(0); \
12+
cout.tie(0);
13+
#define pi acos(-1.0)
14+
#define ll long long
15+
#define ull unsigned ll
16+
#define EPS 1e-12
17+
#define MV 1e18
18+
#define MX 100000009
19+
#define mx 2000056
20+
#define all(v) v.begin(), v.end()
21+
#define rall(v) v.rbegin(), v.rend()
22+
#define mem(a, x) memset(a, x, sizeof(a))
23+
#define gcd(a, b) __gcd(a, b)
24+
#define lcm(a, b) (a * (b / gcd(a, b)))
25+
#define vii vector<int>
26+
#define vll vector<ll>
27+
#define vul vector<ull>
28+
#define pii pair<int, int>
29+
#define pll pair<ll, ll>
30+
#define pip pair<int, pii>
31+
#define pul pair<ull, ull>
32+
#define mii map<int, int>
33+
#define mll map<ll, ll>
34+
#define qii queue<int>
35+
#define dii deque<int>
36+
#define vip vector<pair<int, int>>
37+
#define vlp vector<pair<ll, ll>>
38+
#define djk priority_queue<pll, vlp, greater<pll>>
39+
#define pb push_back
40+
#define mp mate_pair
41+
#define nl '\n'
42+
#define SP(x, y) fixed << setprecision((x)) << (y)
43+
#define mod 1000000007
44+
#define INF 0x3F3F3F3F
45+
46+
int v[mx];
47+
ll a[mx << 4];
48+
49+
void build(int node, int l, int r)
50+
{
51+
if (l > r)
52+
return;
53+
if (l == r)
54+
{
55+
a[node] = v[l];
56+
return;
57+
}
58+
int mid = (l + r) / 2;
59+
int left = node * 2;
60+
int right = node * 2 + 1;
61+
build(left, l, mid);
62+
build(right, mid + 1, r);
63+
a[node] = a[left] + a[right];
64+
}
65+
66+
void update(int node, int l, int r, int point, int val)
67+
{
68+
if (point > r or point < l)
69+
return;
70+
if (l >= point and r <= point)
71+
{
72+
a[node] = val;
73+
return;
74+
}
75+
76+
int mid = (l + r) / 2;
77+
int left = node * 2;
78+
int right = node * 2 + 1;
79+
update(left, l, mid, point, val);
80+
update(right, mid + 1, r, point, val);
81+
a[node] = a[left] + a[right];
82+
}
83+
84+
ll query(int node, int l, int r, int i, int j)
85+
{
86+
if (i > r or j < l)
87+
return 0; //বাইরে চলে গিয়েছে
88+
if (l >= i and j >= r)
89+
{
90+
return a[node]; //রিলেভেন্ট সেগমেন্ট
91+
}
92+
93+
int left = node * 2; //আরো ভাঙতে হবে
94+
int right = node * 2 + 1;
95+
int mid = (l + r) / 2;
96+
ll leftQ = query(left, l, mid, i, j);
97+
ll rightQ = query(right, mid + 1, r, i, j);
98+
99+
return leftQ + rightQ; //বাম এবং ডান পাশের যোগফল
100+
}
101+
102+
void solve()
103+
{
104+
/*
105+
*/
106+
107+
int a, b;
108+
cin >> a >> b;
109+
110+
for (int i = 1; i <= a; i++)
111+
{
112+
cin >> v[i];
113+
}
114+
115+
build(1, 1, a);
116+
while (b--)
117+
{
118+
int p, q, r;
119+
cin >> p >> q >> r;
120+
if (p == 1)
121+
{
122+
update(1, 1, a, q + 1, r);
123+
}
124+
else
125+
{
126+
cout << query(1, 1, a, q + 1, r ) << nl;
127+
}
128+
}
129+
}
130+
131+
int main()
132+
{
133+
FIO;
134+
// startTime = clock();
135+
// int t;
136+
// cin >> t;
137+
// while (t--)
138+
// {
139+
solve();
140+
//}
141+
142+
// fprintf(stderr, "\n>> Runtime: %.10fs\n", (double)(clock() - startTime) / CLOCKS_PER_SEC);
143+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
#include <bits/stdc++.h>
2+
// #include <ext/pb_ds/assoc_container.hpp>
3+
// #include <ext/pb_ds/TREE_policy.hpp>
4+
// #include <ext/pb_ds/detail/standard_policies.hpp>
5+
6+
// using namespace __gnu_pbds;
7+
// using namespace __gnu_cxx;
8+
using namespace std;
9+
#define FIO \
10+
ios_base::sync_with_stdio(0); \
11+
cin.tie(0); \
12+
cout.tie(0);
13+
#define pi acos(-1.0)
14+
#define ll long long
15+
#define ull unsigned ll
16+
#define EPS 1e-12
17+
#define MV 1e18
18+
#define MX 100000009
19+
#define mx 2000056
20+
#define all(v) v.begin(), v.end()
21+
#define rall(v) v.rbegin(), v.rend()
22+
#define mem(a, x) memset(a, x, sizeof(a))
23+
#define gcd(a, b) __gcd(a, b)
24+
#define lcm(a, b) (a * (b / gcd(a, b)))
25+
#define vii vector<int>
26+
#define vll vector<ll>
27+
#define vul vector<ull>
28+
#define pii pair<int, int>
29+
#define pll pair<ll, ll>
30+
#define pip pair<int, pii>
31+
#define pul pair<ull, ull>
32+
#define mii map<int, int>
33+
#define mll map<ll, ll>
34+
#define qii queue<int>
35+
#define dii deque<int>
36+
#define vip vector<pair<int, int>>
37+
#define vlp vector<pair<ll, ll>>
38+
#define djk priority_queue<pll, vlp, greater<pll>>
39+
#define pb push_back
40+
#define mp mate_pair
41+
#define nl '\n'
42+
#define SP(x, y) fixed << setprecision((x)) << (y)
43+
#define mod 1000000007
44+
#define INF 0x3F3F3F3F
45+
46+
int v[mx];
47+
ll a[mx << 4];
48+
49+
void build(int node, int l, int r)
50+
{
51+
if (l > r)
52+
return;
53+
if (l == r)
54+
{
55+
a[node] = v[l];
56+
return;
57+
}
58+
int mid = (l + r) / 2;
59+
int left = node * 2;
60+
int right = node * 2 + 1;
61+
build(left, l, mid);
62+
build(right, mid + 1, r);
63+
a[node] = min(a[left] , a[right]);
64+
}
65+
66+
void update(int node, int l, int r, int point, int val)
67+
{
68+
if (point > r or point < l)
69+
return;
70+
if (l >= point and r <= point)
71+
{
72+
a[node] = val;
73+
return;
74+
}
75+
76+
int mid = (l + r) / 2;
77+
int left = node * 2;
78+
int right = node * 2 + 1;
79+
update(left, l, mid, point, val);
80+
update(right, mid + 1, r, point, val);
81+
a[node] = min(a[left] , a[right]);
82+
}
83+
84+
ll query(int node, int l, int r, int i, int j)
85+
{
86+
if (i > r or j < l)
87+
return INF; //বাইরে চলে গিয়েছে
88+
if (l >= i and j >= r)
89+
{
90+
return a[node]; //রিলেভেন্ট সেগমেন্ট
91+
}
92+
93+
int left = node * 2; //আরো ভাঙতে হবে
94+
int right = node * 2 + 1;
95+
int mid = (l + r) / 2;
96+
ll leftQ = query(left, l, mid, i, j);
97+
ll rightQ = query(right, mid + 1, r, i, j);
98+
99+
return min(leftQ , rightQ); //বাম এবং ডান পাশের যোগফল
100+
}
101+
102+
void solve()
103+
{
104+
/*
105+
*/
106+
107+
int a, b;
108+
cin >> a >> b;
109+
110+
for (int i = 1; i <= a; i++)
111+
{
112+
cin >> v[i];
113+
}
114+
115+
build(1, 1, a);
116+
while (b--)
117+
{
118+
int p, q, r;
119+
cin >> p >> q >> r;
120+
if (p == 1)
121+
{
122+
update(1, 1, a, q + 1, r);
123+
}
124+
else
125+
{
126+
cout << query(1, 1, a, q + 1, r ) << nl;
127+
}
128+
}
129+
}
130+
131+
int main()
132+
{
133+
FIO;
134+
// startTime = clock();
135+
// int t;
136+
// cin >> t;
137+
// while (t--)
138+
// {
139+
solve();
140+
//}
141+
142+
// fprintf(stderr, "\n>> Runtime: %.10fs\n", (double)(clock() - startTime) / CLOCKS_PER_SEC);
143+
}

0 commit comments

Comments
 (0)