Submission #976995

#TimeUsernameProblemLanguageResultExecution timeMemory
976995dubabuba이상한 기계 (APIO19_strange_device)C++14
0 / 100
916 ms2508 KiB
#include <bits/stdc++.h> using namespace std; typedef long long i64; typedef pair<i64, i64> pii; #define ff first #define ss second #define MP make_pair struct tree { i64 tl, tr, sum; tree *lc, *rc; bool lazy; tree(i64 l, i64 r) { tl = l; tr = r; sum = 0; lazy = 0; lc = NULL; rc = NULL; } void upt(i64 l, i64 r) { if(lazy) return; if(tl == l && r == tr) { sum = r - l + 1; lazy = 1; return; } i64 tm = (tl + tr) / 2; if(lc == NULL) lc = new tree(tl, tm); if(rc == NULL) rc = new tree(tm + 1, tr); if(r <= tm) lc-> upt(l, r); else if(tm < l) rc-> upt(l, r); else { lc-> upt(l, tm); rc-> upt(tm + 1, r); } sum = lc-> sum + rc-> sum; if(lc-> lazy && rc-> lazy) lazy = 1; } }; i64 gcd(i64 a, i64 b) { if(a == 0) return b; if(b == 0) return a; return gcd(b % a, a); } int main() { int n, gay = 0; i64 A, B; cin >> n >> A >> B; i64 T = A / gcd(A, B - 1) * B; // cout << T << endl; tree *root = new tree(0, T - 1); vector<pii> v; for(int i = 0; i < n; i++) { i64 l, r; cin >> l >> r; l %= T; r %= T; // cout << l << ' ' << r << endl; if(gay) continue; if(r - l + 1 >= T) { gay = 1; continue; } if(l <= r) { // cout << " > " << l << ' ' << r << endl; // root-> upt(l, r); v.push_back(MP(l, r)); } else { // cout << " > " << l << ' ' << T - 1 << endl; // cout << " > " << 0 << ' ' << r << endl; // root-> upt(l, T - 1); // root-> upt(0, r); v.push_back(MP(l, T - 1)); v.push_back(MP(0, r)); } } if(gay) { cout << T << endl; return 0; } sort(v.begin(), v.end()); i64 ans = 0; i64 l = 0, r = 0; for(pii p : v) { if(r < p.ff) { // cout << l << ' ' << r << endl; ans += (r - l + 1); l = p.ff; } r = p.ss; } // cout << l << ' ' << r << endl; ans += (r - l + 1); cout << ans << endl; return 0; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:62:8: warning: unused variable 'root' [-Wunused-variable]
   62 |  tree *root = new tree(0, T - 1);
      |        ^~~~
#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...