Submission #211472

#TimeUsernameProblemLanguageResultExecution timeMemory
211472VEGAnnStrange Device (APIO19_strange_device)C++14
10 / 100
533 ms17048 KiB
#include <bits/stdc++.h> #pragma GCC optimize("unroll-loops") #pragma GCC optimize("-O3") #pragma GCC optimize("Ofast") #pragma GCC optimize("fast-math") #pragma GCC optimize("no-stack-protector") #define ft first #define sd second #define all(x) x.begin(),x.end() #define sz(x) ((int)x.size()) #define pll pair<ll, ll> #define MP make_pair #define PB push_back using namespace std; typedef long long ll; //typedef long long __int128; vector<pll> seg; int n; ll A, B; int main(){ #ifdef _LOCAL freopen("in.txt","r",stdin); #else ios_base::sync_with_stdio(0); cin.tie(0); #endif // _LOCAL cin >> n >> A >> B; // ll fi = 1; // // while ((fi + fi / B) % A != 0 || fi % B != 0) // fi++; // // cout << fi << '\n'; ll fi = A; if (A >= B) { while (fi <= ll(1e18) && fi % (B + 1) > 0) fi += A; if (fi <= ll(1e18)) fi -= fi / (B + 1); } else { while (fi <= ll(1e18) && ((fi + fi / B) % A != 0)) fi += B; } // cout << fi << '\n'; seg.clear(); for (int i = 0; i < n; i++){ ll l, r; cin >> l >> r; if (r - l + 1 >= fi){ seg.PB(MP(0, fi - 1)); continue; } ll vl = ((l - 1) / fi) * fi + fi; if (vl > r){ vl -= fi; seg.PB(MP(l - vl, r - vl)); } else { vl -= fi; seg.PB(MP(l - vl, fi - 1)); vl += fi; seg.PB(MP(0ll, r - vl)); } } sort(all(seg)); ll lst = -1, ans = 0; for (pll cr : seg) if (cr.ft > lst){ ans += cr.sd - cr.ft + 1ll; lst = cr.sd; } else { ans += max(lst, cr.sd) - lst; lst = max(lst, cr.sd); } cout << ans << '\n'; return 0; }
#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...