Submission #249042

#TimeUsernameProblemLanguageResultExecution timeMemory
249042crossing0verStrange Device (APIO19_strange_device)C++17
20 / 100
2434 ms524292 KiB
#include<bits/stdc++.h> #define tm (tl + tr)/2 #define inf 1100000000000000000 #define ll long long using namespace std; struct tre{ bool lazy; ll sum; ll L,R; tre() { lazy = sum = L = R = 0; } }; vector<tre>t(1); void push(ll v,ll tl,ll tr,ll L,ll R) { if (t[v].lazy) { t[L].lazy = t[R].lazy = 1; t[L].sum = tm - tl+1; t[R].sum = tr - tm; t[v].lazy = 0; } } void upd(ll v,ll tl,ll tr,ll l,ll r) { if (l > tr || r < tl) return; if (l <= tl && r >= tr) { t[v].lazy = 1; t[v].sum = tr - tl + 1; return; } if (t[v].L == 0) { t[v].L = t.size(); t.push_back(tre()); } if (t[v].R == 0) { t[v].R = t.size(); t.push_back(tre()); } push(v,tl,tr,t[v].L,t[v].R); upd(t[v].L,tl,tm,l,r); upd(t[v].R,tm+1,tr,l,r); t[v].sum = t[ t[v].L ].sum + t[ t[v].R ].sum; } main() { ll n,a,b; cin >> n >> a >> b; ll m = a/(__gcd(a,b+1)); if (m > inf/b) m = inf; else m*=b; for (ll l,r;n--;) { cin >> l >> r; if (r - l + 1 >= m) { cout << m <<'\n'; exit(0); } l%=m; r%=m; if ( l <= r) { upd(0,0,m-1,l,r); } else { upd(0,0,m-1,l,m-1); upd(0,0,m-1,0,r); } } cout << t[0].sum; }

Compilation message (stderr)

strange_device.cpp: In constructor 'tre::tre()':
strange_device.cpp:12:14: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   lazy = sum = L = R = 0;
          ~~~~^~~~~~~~~~~
strange_device.cpp: At global scope:
strange_device.cpp:48:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...