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
AC × 2
AC × 47
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