Submission #729612

#TimeUsernameProblemLanguageResultExecution timeMemory
729612danikoynovStrange Device (APIO19_strange_device)C++14
10 / 100
5016 ms524288 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; typedef long long ll; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } const int maxn = 1e6 + 10; int n; ll l[maxn], r[maxn]; ll A, B; bool tf = false; ll check(ll a, ll b) { ///cout << a << " " << b << endl; if (a < 1e9 && b < 1e9) return a * b; if (a > b) swap(a, b); if (b % 2 == 1) { ll s = check(a, b - 1); if (s + a > 1e18) tf = true; return s + a; } ll s = check(a, b / 2); if (s * 2 > (ll)1e18) tf = true; return s * 2; } void solve() { cin >> n >> A >> B; for (int i = 1; i <= n; i ++) { cin >> l[i] >> r[i]; } check(A, B); if (tf) { ll ans = 0; for (int i = 1; i <= n; i ++) { ans = ans + (r[i] - l[i] + 1); } cout << ans << endl; return; } unordered_set < ll > st; for (int i = 1; i <= n; i ++) { for (ll j = l[i]; j <= r[i]; j ++) { ll x = (j + (j / B)) % A, y = j % B; st.insert(x * B + y); } } cout << st.size() << endl; } int main() { solve(); return 0; } /** 1 10000 3312452154131231 1 1 */
#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...