제출 #1150431

#제출 시각아이디문제언어결과실행 시간메모리
1150431Math4Life2020이상한 기계 (APIO19_strange_device)C++20
100 / 100
588 ms66384 KiB
#include <bits/stdc++.h> using namespace std; using ll = __int128; using pii = pair<ll,ll>; int main() { ios_base::sync_with_stdio(false); cin.tie(0); long long N1,A1,B1; cin >> N1 >> A1 >> B1; ll N=N1,A=A1,B=B1; ll P = A*B/gcd(A1,B1+1); //if A = B+1: augment t by B -> augment x by (B+1)%A=0 //increase by B+1 -> period in A: A/gcd(A,B+1) vector<pii> upd; //{x,+1} or {x,-1} for (ll i=0;i<N1;i++) { long long l1,r1; cin >> l1 >> r1; ll l=l1,r=r1; r++; ll D = l/P; l -= P*D; r -= P*D; if (r>=(2*P)) { cout << (long long)P << "\n"; exit(0); } else if (r>=P) { upd.push_back({l,1}); upd.push_back({P,-1}); upd.push_back({0,1}); upd.push_back({r-P,-1}); } else { upd.push_back({l,1}); upd.push_back({r,-1}); } } sort(upd.begin(),upd.end()); ll cx = 0; ll nact = 0; ll ans = 0; for (pii p0: upd) { ll x = p0.first; if (nact>0) { ans += (x-cx); } nact += p0.second; cx = x; } cout << (long long)ans <<"\n"; }
#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...