Submission #1059816

#TimeUsernameProblemLanguageResultExecution timeMemory
1059816dpsaveslivesStrange Device (APIO19_strange_device)C++17
35 / 100
472 ms51920 KiB
#include <bits/stdc++.h> #define ll long long #define f first #define s second using namespace std; const int MAXN = 4e6+10; ll vals[MAXN]; pair<ll,ll> ranges[MAXN]; ll pref[MAXN]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; ll A,B; cin >> N >> A >> B; ll C = A/gcd(A,B+1)*B; int cnt = 0; for(int i = 0;i<N;++i){ ll l,r; cin >> l >> r; if(r-l+1 >= C){ cout << C << "\n"; return 0; } l %= C; r %= C; if(l <= r){ ranges[++cnt] = make_pair(l,r); } else{ ranges[++cnt] = make_pair(0ll,r); ranges[++cnt] = make_pair(l,C-1); } } int m = 0; for(int i = 1;i<=cnt;++i){ vals[++m] = ranges[i].f; vals[++m] = ranges[i].s+1; } sort(vals+1,vals+m+1); for(int i = 1;i<=cnt;++i){ int ind = lower_bound(vals+1,vals+m+1,ranges[i].f)-vals; int ind2 = lower_bound(vals+1,vals+m+1,ranges[i].s+1)-vals; ++pref[ind]; --pref[ind2]; } ll ans = 0ll; for(int i = 1;i<=m;++i){ pref[i] += pref[i-1]; if(pref[i]){ ans += vals[i+1]-vals[i]; } } cout << ans << "\n"; 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...