Submission #211460

#TimeUsernameProblemLanguageResultExecution timeMemory
211460VEGAnnStrange Device (APIO19_strange_device)C++14
30 / 100
602 ms53312 KiB
#include <bits/stdc++.h> #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; vector<pll> vc; 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; // if (B <= ll(1e6)){ ll fi = A * B; if (fi % 2 == 0){ fi >>= 1; if ((fi + fi / B) % A != 0 || fi % B != 0) fi <<= 1; } 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; // } // // for (int i = 0; i < n; i++){ // ll l, r; cin >> l >> r; // // for (ll t = l; t <= r; t++) // vc.PB(MP((t + t / B) % A, t % B)); // } // // sort(all(vc)); // vc.resize(unique(all(vc)) - vc.begin()); // // cout << sz(vc); 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...