Submission #1200101

#TimeUsernameProblemLanguageResultExecution timeMemory
1200101adiyerStrange Device (APIO19_strange_device)C++20
20 / 100
634 ms432108 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 11; ll n, a, b, c, res, sz = 1; ll l[N], r[N], was[N], t[20 * N]; int lv[30 * N], rv[30 * N], lzy[30 * N]; __int128 val; void push(ll v, ll l, ll r){ if(lzy[v] == 0) return; if(l != r){ if(!lv[v]) lv[v] = ++sz; if(!rv[v]) rv[v] = ++sz; lzy[lv[v]] = lzy[rv[v]] = 1; } t[v] = (r - l + 1); } void upd(ll tl, ll tr, ll x, ll v = 1, ll l = 0, ll r = c - 1){ push(v, l, r); if(r < tl || tr < l) return; if(tl <= l && r <= tr){ lzy[v] = 1, push(v, l, r); return; } ll md = (l + r) / 2; if(!lv[v]) lv[v] = ++sz; if(!rv[v]) rv[v] = ++sz; upd(tl, tr, x, lv[v], l, md); upd(tl, tr, x, rv[v], md + 1, r); t[v] = t[lv[v]] + t[rv[v]]; } void solve(){ cin >> n >> a >> b; for(ll i = 1; i <= n; i++) cin >> l[i] >> r[i]; val = a / __gcd(a, b + 1), val *= b; if(val > 1e18){ for(ll i = 1; i <= n; i++) res += r[i] - l[i] + 1; cout << res; return; } c = val; for(ll i = 1; i <= n; i++){ if(r[i] - l[i] + 1 >= c){ cout << c << '\n'; return; } l[i] %= c, r[i] %= c; if(l[i] <= r[i]) upd(l[i], r[i], 1); else upd(l[i], c - 1, 1), upd(0, r[i], 1); } cout << t[1]; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); int tt = 1; // cin >> tt; while(tt--) solve(); }
#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...