Submission #1242753

#TimeUsernameProblemLanguageResultExecution timeMemory
1242753andrewgopherStrange Device (APIO19_strange_device)C++20
10 / 100
434 ms33412 KiB
#include "bits/stdc++.h" using namespace std; #define fast ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0) #define endl '\n' using ll=long long; void solve() { int n; ll a,b; cin >> n >> a >> b; ll m = a*b/gcd(b+1,a); //vector<pair<ll,ll>> ivals; vector<pair<ll,bool>> evs; ll ans = -1; for (int i =0;i<n;i++){ ll l,r; cin >> l >> r; if (r-l >= m-1){ ans = m; continue; } //add interval if (l%m <= r%m){ evs.push_back({l%m,true}); evs.push_back({r%m,false}); } else { evs.push_back({l%m,true}); evs.push_back({m-1,false}); evs.push_back({0,true}); evs.push_back({r%m,false}); } } if (ans!=-1){ cout << ans << endl; return; } ans=0; sort(evs.begin(),evs.end(),[&](pair<ll,bool>&a, pair<ll,bool>& b){ if (a.first != b.first){ return a.first<b.first; } else{ return a.second; } }); int i=0; int curis = 0; ll prevst = -1; while (i<evs.size()){ ll curt= evs[i].first; ll curty = evs[i].second; while (i<evs.size() && evs[i].first==curt && evs[i].second==curty){ if (evs[i].second){ //cout << "start " << curt << endl; curis++; } else { //cout << "end " << curt << endl; curis--; } i++; } if (curis == 0){ ans += curt-prevst+1; prevst=-1; } else if (prevst==-1){ prevst=curt; } //cout << curis << " " << prevst << " " << ans << endl; } cout << ans << endl; } signed main() { fast; int t=1; while (t--) solve(); 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...