Submission #1158261

#TimeUsernameProblemLanguageResultExecution timeMemory
1158261AlgorithmWarriorStrange Device (APIO19_strange_device)C++20
100 / 100
1086 ms63120 KiB
#include <bits/stdc++.h> #define ll __int128 using namespace std; int const MAX=4e6+5; struct operation{ ll pos; int type; bool operator<(operation ot){ return pos<ot.pos; } }ops[MAX]; ll cmmdc(ll a,ll b){ while(b){ ll r=a%b; a=b; b=r; } return a; } ll cmmmc(ll a,ll b){ return a*b/cmmdc(a,b); } long long n,a,b; ll rep; int total_ops; bool create_ops(){ bool all=0; int i; for(i=1;i<=n;++i){ long long l,r; cin>>l>>r; if(r-l+1>=rep) all=1; else{ ll rest1=l%rep; ll rest2=r%rep; if(rest1<=rest2){ ops[++total_ops]={rest1,1}; ops[++total_ops]={rest2+1,-1}; } else{ ops[++total_ops]={rest1,1}; ops[++total_ops]={rep,-1}; ops[++total_ops]={0,1}; ops[++total_ops]={rest2+1,-1}; } } } sort(ops+1,ops+total_ops+1); return all; } ll solve(){ ll total=0; int sum=0; int i; for(i=1;i<=total_ops;++i){ if(sum>0) total+=ops[i].pos-ops[i-1].pos; sum+=ops[i].type; } return total; } int main() { cin>>n>>a>>b; rep=cmmmc(a,b+1)/(b+1)*b; if(create_ops()) cout<<(long long)rep; else cout<<(long long)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...