Submission #132359

#TimeUsernameProblemLanguageResultExecution timeMemory
132359bogdan10bosStrange Device (APIO19_strange_device)C++14
35 / 100
2806 ms18192 KiB
/// Just for others, not for me :( 9 days and counting #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<LL, LL> pii; LL A, B; int main() { //freopen("1.in", "r", stdin); int T; cin >> T >> A >> B; LL d = __gcd(A, B + 1); LL K = A / d; K *= B; vector<pii> itvs; for(int i = 1; i <= T; i++) { LL st, dr; cin >> st >> dr; if(dr - st + 1 >= K) { cout << K << '\n'; exit(0); } st %= K, dr %= K; if(st <= dr) itvs.push_back({st, dr}); else { itvs.push_back({st, K - 1}); itvs.push_back({0, dr}); } } sort(itvs.begin(), itvs.end(), [](pii a, pii b) { if(a.second == b.second) return a.first < b.first; return a.second < b.second; }); LL ans = 0; while(!itvs.empty()) { pii itv = itvs.back(); itvs.pop_back(); while(!itvs.empty()) { if(itvs.back().second >= itv.first) { pii itv2 = itvs.back(); itvs.pop_back(); itv.first = min(itv.first, itv2.first); } else break; } ans += itv.second - itv.first + 1; } cout << ans << '\n'; }
#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...