Submission #136662

#TimeUsernameProblemLanguageResultExecution timeMemory
136662KLPPStrange Device (APIO19_strange_device)C++14
35 / 100
2755 ms49176 KiB
#include<bits/stdc++.h> using namespace std; typedef long long int lld; typedef pair<lld,lld> pii; #define rep(i,a,b) for(int i=a;i<b;i++) #define trav(a,v) for(auto a:v) lld GCD(lld x, lld y){ if(y==0)return x; return GCD(y,x%y); } int main(){ srand(time(NULL)); lld n,A,B; cin>>n>>A>>B; /*n=1; A=rand()%100; B=rand()%100;*/ lld l[n]; lld r[n]; rep(i,0,n){ cin>>l[i]>>r[i]; /*l[i]=rand()%200; r[i]=rand()%200; if(l[i]>r[i])swap(l[i],r[i]);*/ } lld D=GCD(A,B+1); D=A/D; vector<pii> seg; rep(i,0,n){ if(r[i]-l[i]+1>=D*B){ cout<<D*B<<endl; return 0; } l[i]%=D*B; r[i]%=D*B; if(l[i]>r[i]){ seg.push_back(pii(0,r[i])); seg.push_back(pii(l[i],D*B-1)); }else{ seg.push_back(pii(l[i],r[i])); } } sort(seg.begin(),seg.end()); stack<pii> s; rep(i,0,seg.size()){ //cout<<seg[i].first<<" "<<seg[i].second<<endl; if(s.empty() || seg[i].first>s.top().second){ s.push(seg[i]); }else{ s.top().second=max(s.top().second,seg[i].second); } } lld ans=0; while(!s.empty()){ //cout<<s.top().first<<" "<<s.top().second<<endl; ans+=s.top().second-s.top().first+1; //cout<<ans<<endl; s.pop(); } cout<<ans<<endl; //cout<<s.size()<<" "<<min(r[0]-l[0]+1,D*B)<<" "<<A<<" "<<B<<" "<<l[0]<<" "<<r[0]<<endl; //trav(a,s)cout<<a.first<<" "<<a.second<<endl; return 0; }

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:6:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define rep(i,a,b) for(int i=a;i<b;i++)
strange_device.cpp:47:7:
   rep(i,0,seg.size()){
       ~~~~~~~~~~~~~~             
strange_device.cpp:47:3: note: in expansion of macro 'rep'
   rep(i,0,seg.size()){
   ^~~
#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...