Submission #1044642

#TimeUsernameProblemLanguageResultExecution timeMemory
1044642vjudge1Strange Device (APIO19_strange_device)C++17
100 / 100
257 ms37560 KiB
#pragma GCC optimize("unroll-loops,Ofast,O3") #include <bits/stdc++.h> #define pb push_back #define mp make_pair #define spc << " " << #define endl "\n" #define all(x) x.begin(), x.end() #define int long long #define ii pair<long long,int> #define vi vector<int> #define vii vector<ii> #define st first #define nd second #define inf 1e15 #define MOD 1000000007 #define MX 200005 using namespace std; void solve(){ int n,A,B; cin >> n >> A >> B; vii seg; A = A/__gcd(B+1, A); if(sqrt(A)*sqrt(B)>=1e9){ int ans=0; for(int i=1; i<=n; i++){ int l,r; cin >> l >> r; ans+=r-l+1; } cout << ans << endl; return; } int wow = A*B; //cerr << wow << endl; for(int i=1; i<=n; i++){ int l,r; cin >> l >> r; if(r-l+1>=wow){ cout << wow << endl; return; } l%=wow; r%=wow; if(r>=l) seg.pb({l,r}); else{ seg.pb({0,r}); seg.pb({l, wow-1}); } } sort(all(seg)); int ans=0, cur=-1; for(auto p:seg){ //cerr << p.st spc p.nd << endl; ans += max((int)0, min(p.nd-p.st+1, p.nd-cur)); cur = max(cur, p.nd); } cout << ans << endl; } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0); #ifdef Local freopen("in","r",stdin); freopen("out","w",stdout); #endif /*freopen("nondec.in","r",stdin); freopen("nondec.out","w",stdout);*/ int t=1; //cin >> t; while(t--) solve(); }
#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...