Submission #65280784
Source Code Expand
#include "bits/stdc++.h"
using namespace std;
#define ll long long
const int MAX = 1000000000;
struct IST
{
int cmin, cmax, mid;
ll vals[2];
int tot;
int lazy;
IST *l, *r;
IST(int lo, int hi) {
cmin = lo;
cmax = hi;
mid = (lo + hi) / 2;
vals[0] = 0;
vals[1] = 0;
lazy = 0;
tot = 0;
l = NULL;
r = NULL;
}
IST * get_l() {
if (l == NULL) {
l = new IST(cmin, mid);
}
return l;
}
IST * get_r() {
if (r == NULL) {
r = new IST(mid + 1, cmax);
}
return r;
}
void pull() {
pushdown();
vals[0] = 0;
vals[1] = 0;
tot = 0;
for (int it = 0; it < 2; it++) {
if (l != NULL) {
l->pushdown();
vals[0] += l->vals[0];
vals[1] += l->vals[1];
tot += l->tot;
}
swap(l, r);
}
}
void pushdown() {
if (lazy) {
swap(vals[0], vals[1]);
lazy = 0;
if (cmin != cmax) {
get_l()->lazy ^= 1;
get_r()->lazy ^= 1;
}
}
}
void flip(int minb, int maxb) {
pushdown();
if (minb <= cmin && cmax <= maxb) {
lazy ^= 1;
}
else if (cmin > maxb || cmax < minb) {
return;
}
else {
get_l()->flip(minb, maxb);
get_r()->flip(minb, maxb);
pull();
}
}
void add(int c, int parity = 1) {
pushdown();
if (cmin == cmax) {
vals[parity] += c;
tot++;
return;
}
if (c <= mid) {
get_l()->add(c, parity);
}
else {
int tl = get_l()->tot & 1;
get_r()->add(c, parity ^ tl);
}
pull();
}
};
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int q; cin >> q;
IST * root = new IST(0, MAX);
ll ans = 0;
while (q--) {
ll x; cin >> x;
x += ans;
x %= MAX;
x++;
root->flip(x, MAX);
root->add(x);
ans = root->vals[1];
cout << ans << "\n";
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - Odd Position Sum Query |
| User | bucketpotato |
| Language | C++ 20 (gcc 12.2) |
| Score | 600 |
| Code Size | 2051 Byte |
| Status | AC |
| Exec Time | 948 ms |
| Memory | 756680 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt, 01_test_44.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3480 KiB |
| 00_sample_01.txt | AC | 1 ms | 3532 KiB |
| 01_test_00.txt | AC | 1 ms | 3392 KiB |
| 01_test_01.txt | AC | 1 ms | 3540 KiB |
| 01_test_02.txt | AC | 1 ms | 3432 KiB |
| 01_test_03.txt | AC | 1 ms | 3696 KiB |
| 01_test_04.txt | AC | 2 ms | 4728 KiB |
| 01_test_05.txt | AC | 2 ms | 5352 KiB |
| 01_test_06.txt | AC | 21 ms | 25596 KiB |
| 01_test_07.txt | AC | 6 ms | 10172 KiB |
| 01_test_08.txt | AC | 59 ms | 63036 KiB |
| 01_test_09.txt | AC | 308 ms | 274184 KiB |
| 01_test_10.txt | AC | 580 ms | 476532 KiB |
| 01_test_11.txt | AC | 517 ms | 428412 KiB |
| 01_test_12.txt | AC | 929 ms | 714480 KiB |
| 01_test_13.txt | AC | 923 ms | 714184 KiB |
| 01_test_14.txt | AC | 154 ms | 3484 KiB |
| 01_test_15.txt | AC | 235 ms | 4868 KiB |
| 01_test_16.txt | AC | 188 ms | 3648 KiB |
| 01_test_17.txt | AC | 258 ms | 4920 KiB |
| 01_test_18.txt | AC | 277 ms | 5052 KiB |
| 01_test_19.txt | AC | 301 ms | 5408 KiB |
| 01_test_20.txt | AC | 221 ms | 8248 KiB |
| 01_test_21.txt | AC | 361 ms | 9652 KiB |
| 01_test_22.txt | AC | 399 ms | 43756 KiB |
| 01_test_23.txt | AC | 467 ms | 44232 KiB |
| 01_test_24.txt | AC | 579 ms | 269620 KiB |
| 01_test_25.txt | AC | 729 ms | 288100 KiB |
| 01_test_26.txt | AC | 945 ms | 756632 KiB |
| 01_test_27.txt | AC | 948 ms | 756680 KiB |
| 01_test_28.txt | AC | 946 ms | 735324 KiB |
| 01_test_29.txt | AC | 921 ms | 735360 KiB |
| 01_test_30.txt | AC | 933 ms | 747572 KiB |
| 01_test_31.txt | AC | 937 ms | 747516 KiB |
| 01_test_32.txt | AC | 649 ms | 284016 KiB |
| 01_test_33.txt | AC | 647 ms | 283116 KiB |
| 01_test_34.txt | AC | 696 ms | 712216 KiB |
| 01_test_35.txt | AC | 648 ms | 635068 KiB |
| 01_test_36.txt | AC | 699 ms | 712940 KiB |
| 01_test_37.txt | AC | 667 ms | 664648 KiB |
| 01_test_38.txt | AC | 709 ms | 714160 KiB |
| 01_test_39.txt | AC | 704 ms | 705440 KiB |
| 01_test_40.txt | AC | 724 ms | 714704 KiB |
| 01_test_41.txt | AC | 724 ms | 713148 KiB |
| 01_test_42.txt | AC | 1 ms | 3488 KiB |
| 01_test_43.txt | AC | 241 ms | 3412 KiB |
| 01_test_44.txt | AC | 237 ms | 4972 KiB |