제출 #1149381

#제출 시각아이디문제언어결과실행 시간메모리
1149381dosts이상한 기계 (APIO19_strange_device)C++20
100 / 100
282 ms32660 KiB
#include <bits/stdc++.h> #pragma GCC target("avx2") #pragma GCC optimize("O3,unroll-loops") using namespace std; #define int long long #define pii pair<int,int> #define ff first #define ss second #define sp << " " << #define all(cont) cont.begin(),cont.end() #define vi vector<int> const int inf = 1e18,N = 3e5+1,MOD = 998244353,BL = 1000; void solve() { int n,A,B; cin >> n >> A >> B; vi l(n+1),r(n+1); for (int i=1;i<=n;i++) cin >> l[i] >> r[i]; if (A/__gcd(A,B+1) > (inf)/B) { int sm = 0; for (int i=1;i<=n;i++) sm+=r[i]-l[i]+1; cout << sm << '\n'; return; } int p = A/__gcd(A,B+1)*B; for (int i=1;i<=n;i++) { if (r[i]-l[i]+1 >= p) { cout << p << '\n'; return; } } vector<pii> segs; for (int i=1;i<=n;i++) { l[i]%=p; r[i]%=p; if (l[i] <= r[i]) { segs.push_back({l[i],r[i]}); } else { segs.push_back({l[i],p-1}); segs.push_back({0,r[i]}); } } sort(all(segs)); int uni = 0; int mx = -1; for (auto it : segs) { uni+=max(0ll,it.ss-max(mx+1,it.ff)+1); mx = max(mx,it.ss); } cout << uni << '\n'; } int32_t main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifdef Dodi freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t = 1; //cin >> t; while (t --> 0) solve(); }
#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...