Submission #559786

#TimeUsernameProblemLanguageResultExecution timeMemory
559786tranxuanbachStrange Device (APIO19_strange_device)C++17
100 / 100
867 ms100184 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define endl '\n' #define fi first #define se second #define For(i, l, r) for (auto i = (l); i < (r); i++) #define ForE(i, l, r) for (auto i = (l); i <= (r); i++) #define FordE(i, l, r) for (auto i = (l); i >= (r); i--) #define Fora(v, a) for (auto v: (a)) #define bend(a) (a).begin(), (a).end() #define isz(a) ((signed)(a).size()) using ll = long long; using ld = long double; using pii = pair <int, int>; using vi = vector <int>; using vpii = vector <pii>; using vvi = vector <vi>; const int N = 1e6 + 5; int n; ll A, B; ll ans; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("KEK.inp", "r", stdin); // freopen("KEK.out", "w", stdout); cin >> n >> A >> B; __int128 G = (__int128)(A / __gcd(A, B + 1)) * B; if (G > (__int128)1e18){ map <ll, ll> mpp; while (n--){ ll l, r; cin >> l >> r; mpp[l]++; mpp[r + 1]--; } int cnt = 0; ll l = 0; Fora(elem, mpp){ ll r = elem.fi; if (cnt != 0){ ans += r - l; } cnt += elem.se; l = r; } cout << ans << endl; return 0; } ll g = G; map <ll, ll> mpp; while (n--){ ll l, r; cin >> l >> r; if (r - l + 1 >= g){ cout << g << endl; return 0; } l %= g; r %= g; if (l <= r){ mpp[l]++; mpp[r + 1]--; } else{ mpp[l]++; mpp[g]--; mpp[0]++; mpp[r + 1]--; } } int cnt = 0; ll l = 0; Fora(elem, mpp){ ll r = elem.fi; if (cnt != 0){ ans += r - l; } cnt += elem.se; l = r; } cout << ans << endl; } /* ==================================================+ INPUT: | --------------------------------------------------| --------------------------------------------------| ==================================================+ OUTPUT: | --------------------------------------------------| --------------------------------------------------| ==================================================+ */
#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...