Submission #941142

#TimeUsernameProblemLanguageResultExecution timeMemory
941142adhityamvStrange Device (APIO19_strange_device)C++17
100 / 100
1025 ms163680 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define mp make_pair #define pii pair<int,int> #define fi first #define se second const int INF=1000000000000000000; int gcd(int a,int b){ if(b==0 || a==0) return a+b; if(a<b) swap(a,b); return gcd(b,a%b); } void solve(){ int n,a,b; cin >> n >> a >> b; int bp=a/gcd(a,b+1LL); int p; if(bp>INF/b){ p=INF; } else p=(bp*b); vector<pii> ranges; for(int i=0;i<n;i++){ int l,r; cin >> l >> r; ranges.push_back(mp(l,r)); } set<int> imppts; imppts.insert(0); imppts.insert(p); map<int,int> cnt; for(auto [l,r]:ranges){ if(r-l+1LL>=p){ cout << p << "\n"; return; } r%=p; l%=p; imppts.insert(l); imppts.insert(r+1); cnt[l]++; cnt[r+1]--; if(l>r){ cnt[0]++; cnt[p]--; } } int ccnt=0; int prev=0; int ans=0; for(int i:imppts){ if(ccnt>0) ans+=(i-prev); ccnt+=cnt[i]; prev=i; } cout << ans; } signed main(){ auto begin = std::chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(false); cin.tie(NULL); int t; t=1; //cin >> t; while(t--) solve(); auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); }
#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...