Submission #781757

#TimeUsernameProblemLanguageResultExecution timeMemory
781757christinelynnStrange Device (APIO19_strange_device)C++17
15 / 100
248 ms32464 KiB
#include <bits/stdc++.h> using namespace std; # define int long long # define fir first # define sec second # define pb push_back const int cnst = 2e5+5; bool mutipletestcase = 0; //bool debug = false; int gcd(int a, int b) {return b ? gcd(b, a%b): a;} int lcm(int a, int b) {return a/gcd(a, b)*b;} void solve() { int n, a, b; cin >> n >> a >> b; pair<int, int> num[n+5]; int length = 0; for(int i = 1; i<=n; i++) { int x, y; cin >> x >> y; length += y-x+1; num[i] = {x, y}; } if(length <= 1e6) { set<pair<int, int>> st; for(int i = 1; i<=n; i++) { int x, y; x = num[i].fir, y = num[i].sec; for(int i = x; i<=y; i++) { st.insert({(i+i/b)%a, i%b}); } } cout << st.size() << endl; return; } if(a*b <= 1e6) { int val = a*b; int ans = 0; int get[val*2+5]; memset(get, 0, sizeof(get)); for(int i = 1; i<=n; i++) { int x, y; x = num[i].fir, y = num[i].sec; int len = y-x+1; if(len >= a*b) ans = val; x %= val; y %= val; if(!y) y += val; if(!x) x += val; if(y < x) y += val; // cerr << x << " " << y << endl; get[x]+=1, get[y+1] -= 1; } if(ans == val) cout << ans << endl; else { bool yes[val+5]; memset(yes, 0, sizeof(yes)); for(int i = 1; i<=2*val; i++) { get[i] += get[i-1]; // cerr << i << " " << get[i] << " " << endl; // if(get[i]) cerr << i << " "; if(get[i]) yes[i%val] = 1; } for(int i = 0; i<=val; i++) { if(yes[i]) ans++; } cout << ans << endl; } return; } } signed main() { ios_base::sync_with_stdio(false); int t = 1; if(mutipletestcase) cin >> t; while(t--) 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...