Submission #222717

#TimeUsernameProblemLanguageResultExecution timeMemory
222717shart23Strange Device (APIO19_strange_device)C++14
10 / 100
5058 ms524292 KiB
#include <bits/stdc++.h>

#define int long long
#define endl "\n"

using namespace std;

int clever(int n, int a, int b, vector<pair<int, int>> &seg) {
    long double k1 = a * (long double) b;
    int k = (int) 1e18 + 1;
    if (k1 <= 1e18) {
        k = a;
    }
    vector<pair<int, int>> segs;
    for (int i = 0; i < n; i++) {
        int l = seg[i].first, r = seg[i].second;
        if (r - l + 1 >= k) {
            segs.emplace_back(0, k - 1);
            continue;
        }
        int l1 = l % k, r1 = r % k;
        if (r1 < l1) {
            segs.emplace_back(0, r1);
            segs.emplace_back(l1, k - 1);
        } else {
            segs.emplace_back(l1, r1);
        }
    }
    sort(segs.begin(), segs.end());
    int mxr = -1;
    int res = 0;
    for (auto x : segs) {
        res += max(x.second - max(mxr, x.first - 1), 0LL);
        mxr = max(x.second, mxr);
    }
    return res;
}

int stupid(int n, int a, int b, vector<pair<int, int>> &seg) {
    set<pair<int, int>> ans;
    for (int i = 0; i < n; i++) {
        int l = seg[i].first, r = seg[i].second;
        for (int j = l; j <= r; j++) {
            ans.insert({(j + j / b) % a, j % b});
        }
    }
    return ans.size();
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n, a, b;
    cin >> n >> a >> b;
    vector<pair<int, int>> seg(n);
    for (auto &x : seg) {
        cin >> x.first >> x.second;
    }
    cout << stupid(n, a, b, seg) << endl;
}
#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...