제출 #1242759

#제출 시각아이디문제언어결과실행 시간메모리
1242759andrewgopher이상한 기계 (APIO19_strange_device)C++20
35 / 100
476 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,false}); evs.push_back({r%m,true}); } else { evs.push_back({l%m,false}); evs.push_back({m-1,true}); evs.push_back({0,false}); evs.push_back({r%m,true}); } } if (ans!=-1){ cout << ans << endl; return; } ans=0; sort(evs.begin(),evs.end()); int i=0; int curis = 0; ll prevst = -1; while (i<evs.size()){ ll curt= evs[i].first; bool 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...