Submission #212662

#TimeUsernameProblemLanguageResultExecution timeMemory
212662vioalbertStrange Device (APIO19_strange_device)C++14
65 / 100
570 ms32684 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll n, a, b; pair<ll, ll> t[2000005]; stack<pair<ll, ll>> st; ll gcd(ll a, ll b) { if(b == 0) return a; else return gcd(b, a%b); } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> a >> b; ll g = gcd(a,b+1); ll k = a/g; ll tlimit = k * b; int idx = 0; for(int i = 0; i < n; i++) { ll l, r; cin >> l >> r; l %= tlimit; r %= tlimit; if(l > r) { t[idx++] = {l, tlimit-1}; t[idx++] = {0, r}; } else { t[idx++] = {l, r}; } } sort(t, t+idx); st.push(t[0]); for(int i = 1; i < idx; i++) { if(st.top().second < t[i].first) st.push(t[i]); else if(st.top().second < t[i].second) st.top().second = t[i].second; } ll ans = 0; while(!st.empty()) { ans += 1ll * (st.top().second - st.top().first + 1); st.pop(); } 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...