Submission #834079

#TimeUsernameProblemLanguageResultExecution timeMemory
834079AntekbStrange Device (APIO19_strange_device)C++17
100 / 100
1267 ms69040 KiB
#include<bits/stdc++.h> #define st first #define nd second #define all(x) (x).begin(), (x).end() #define pb push_back #define eb emplace_back #define pp pop_back #define mp make_pair using namespace std; using pii = pair<int, int>; using ll = long long; using vi = vector<int>; using vii = vector<pii>; void debug(){cerr<<"\n";} template<typename H, typename... T> void debug(H h, T... t){ cerr<<h; if(sizeof...(t)){ cerr<<", "; } debug(t...); } #define deb(x...) cerr<<#x<<" = ";debug(x); mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); int main(){ int n; ll a, b; cin>>n>>a>>b; if(b>=ll(1e18)/(a/gcd(a, b+1))){ ll s=0; for(int i=0; i<n; i++){ ll l, r; cin>>l>>r; s+=r-l+1; } cout<<s; return 0; } ll t=b*(a/__gcd(a, b+1)); vector<pair<ll, int> > V; for(int i=0; i<n; i++){ ll l, r; cin>>l>>r; if(r-l+1>=t){ cout<<t; return 0; } l%=t; r%=t; if(l<=r){ V.eb(l, 1); V.eb(r+1, -1); } else{ V.eb(0, 1); V.eb(r+1, -1); V.eb(l, 1); } } V.eb(t, 0); sort(all(V)); ll s=0, prv=0; int part=0; for(auto i:V){ if(i.st!=prv){ if(part>0)s+=i.st-prv; prv=i.st; } part+=i.nd; } cout<<s; }
#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...