제출 #1197913

#제출 시각아이디문제언어결과실행 시간메모리
1197913vneduStrange Device (APIO19_strange_device)C++17
100 / 100
278 ms32324 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; template<class T> bool maximize(T &a, const T &b){ return (a < b ? a = b, 1 : 0); } template<class T> bool minimize(T &a, const T &b){ return (a > b ? a = b, 1 : 0); } #define fi first #define se second #define pb push_back #define ii pair<int, int> #define all(x) x.begin(), x.end() #define TASK "nonsense" /// end of template /// const int Q = 1e6 + 10; ll S=0,L=0,A,B; int _q; pair<ll,ll> q[Q]; namespace sub1 { bool check() { return (S<=(int)1e6); } set<pair<ll,ll>> s; void solve() { for(int i=1;i<=_q;++i) { for(ll t=q[i].fi;t<=q[i].se;++t) s.insert({(t+t/B)%A,t%B}); } cout<<(int)s.size(); } } namespace subfull { pair<ll,ll> b[2*Q]; void solve() { // for(int t=0;t<=20;++t) // { // cout<<t<<' '<<(t+t/B)%A<<' '<<t%B<<'\n'; // } ll d=A/__gcd(A,B+1); if(LLONG_MAX/d<B) d=LLONG_MAX; else d*=B; int ptr=0; // cout<<d<<'\n'; for(int i=1;i<=_q;++i) { ll l=q[i].fi,r=q[i].se; if(r-l+1>=d) return void(cout<<d); l%=d; r%=d; if(l<=r) b[++ptr]={l,r}; else { b[++ptr]={l,d-1}; b[++ptr]={0,r}; } } sort(b+1,b+1+ptr); ll ans=0; pair<ll,ll> lst={-1,-2}; // cout<<ptr<<'\n'; // cout<<"DSAD"; for(int i=1;i<=ptr;++i) { // cout<<b[i].fi<<' '<<b[i].se<<'\n'; if(b[i].fi>lst.se) ans+=lst.se-lst.fi+1,lst=b[i]; else maximize(lst.se,b[i].se); } ans+=lst.se-lst.fi+1; cout<<ans; } } void solve() { cin>>_q>>A>>B; for(int i=1;i<=_q;++i) { ll l,r; cin>>l>>r; q[i]={l,r}; maximize(L,r-l+1); S+=r-l+1; } if(sub1::check()) return void(sub1::solve()); return void(subfull::solve()); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen(TASK".inp","r",stdin); // freopen(TASK".out","w",stdout); int testcase=1; // cin>>testcase; while (testcase--) 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...