Submission #1181906

#TimeUsernameProblemLanguageResultExecution timeMemory
1181906SalihSahinStrange Device (APIO19_strange_device)C++20
5 / 100
1006 ms125724 KiB
#include "bits/stdc++.h" #define pb push_back #define int long long using namespace std; const int inf = 2e18; const int mod = 998244353; const int N = 2e6 + 5; int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0), cout.tie(0); int n, a, b; cin>>n>>a>>b; vector<int> l(n), r(n); for(int i = 0; i < n; i++){ cin>>l[i]>>r[i]; l[i]--, r[i]--; } if(a > inf / b){ int tot = 0; for(int i = 0; i < n; i++){ int len = r[i] - l[i] + 1; tot += len; } cout<<tot<<endl; return 0; } int per = a * b; bool all = 0; map<int, int> upd; set<int> ste; for(int i = 0; i < n; i++){ int df = (r[i] / per) - (l[i] / per); int lmod = l[i] % per; int rmod = r[i] % per; ste.insert(lmod); if(rmod != a*b-1) ste.insert(rmod+1); if((r[i] - l[i] + 1) >= per) all = 1; else if(df == 1){ upd[lmod]++; upd[0]++; if(rmod != a*b-1) upd[rmod+1]--; } else{ upd[lmod]++; if(rmod != a*b-1) upd[rmod+1]--; } } ste.insert(0); ste.insert(a*b-1); if(all){ cout<<a*b<<endl; } else{ int ans = 0, delt = 0, lst = 0; for(auto itr: ste){ if(delt > 0){ ans += (itr - lst); } delt += upd[itr]; lst = itr; } if(delt > 0) ans++; cout<<ans<<endl; } 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...