#include <bits/stdc++.h>
using namespace std;
const int N = 1e7 + 1;
int t[4 * N], h[4 * N], c;
void push(int v, int l, int r)
{
if(!h[v]) return;
if(l == r)
{
t[v] = (r - l + 1) * h[v];
h[v] = 0;
return;
}
else
{
t[v] = (r - l + 1) * h[v];
h[v + v] = h[v];
h[v + v + 1] = h[v];
h[v] = 0;
return;
}
}
void upd(int v, int l, int r, int ql, int qr)
{
int mid = l + r >> 1;
if(r < ql || l > qr) return;
if(ql <= l && r <= qr)
{
h[v] = 1;
push(v, l, r);
return;
}
else
{
upd(v + v, l, mid, ql, qr);
upd(v + v + 1, mid + 1, r, ql, qr);
}
push(v + v, l, mid);
push(v + v + 1, mid + 1, r);
t[v] = t[v + v] + t[v + v + 1];
}
int getsum(int v, int l, int r, int ql, int qr)
{
push(v, l, r);
if(r < ql || l > qr) return 0;
if(ql <= l && r <= qr)
{
return t[v];
}
else
{
int mid = l + r >> 1;
return getsum(v + v, l, mid, ql, qr) + getsum(v + v + 1, mid + 1, r, ql, qr);
}
}
main()
{
int m; cin >> m;
while(m--)
{
int d, l, r;
cin >> d >> l >> r;
if(d % 2)
{
c = getsum(1, 1, N, l + c, r + c);
if(r + c > N - 1) assert(0);
cout << c << endl;
}
else
{
upd(1, 1, N, l + c, r + c);
}
}
}
/*
6
2 1 7
2 10 12
1 7 11
2 11 13
1 8 10
1 15 17
*/
Compilation message
apple.cpp: In function 'void upd(int, int, int, int, int)':
apple.cpp:28:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
int mid = l + r >> 1;
~~^~~
apple.cpp: In function 'int getsum(int, int, int, int, int)':
apple.cpp:58:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
int mid = l + r >> 1;
~~^~~
apple.cpp: At global scope:
apple.cpp:63:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
main()
^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
500 KB |
Output is correct |
3 |
Correct |
2 ms |
576 KB |
Output is correct |
4 |
Correct |
39 ms |
20576 KB |
Output is correct |
5 |
Correct |
46 ms |
23480 KB |
Output is correct |
6 |
Correct |
44 ms |
23480 KB |
Output is correct |
7 |
Correct |
46 ms |
23480 KB |
Output is correct |
8 |
Correct |
262 ms |
103532 KB |
Output is correct |
9 |
Correct |
435 ms |
131912 KB |
Output is correct |
10 |
Runtime error |
48 ms |
131912 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
11 |
Halted |
0 ms |
0 KB |
- |