Submission #128168

#TimeUsernameProblemLanguageResultExecution timeMemory
128168wasylStrange Device (APIO19_strange_device)C++11
35 / 100
685 ms18276 KiB
#include <bits/stdc++.h>
#define st first
#define nd second
using namespace std;
using ll = long long;

int n; ll a, b, v, m;
vector< pair< ll, ll > > ilo;

ll gcd(const ll a, const ll b)
{
    return (b == 0? a : gcd(b, a % b));
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> a >> b;

    v = gcd(a, b + 1);
    __int128 q = a / v * b;
    if (q >= (ll)(1e18) + 1) m = (ll)(1e18) + 1;
    else m = q;

    //cerr << "m: " << m << '\n';

    for (int i = 0; i < n; ++i)
    {
        ll l, r; cin >> l >> r;
        if (r - l + 1 >= m)
            return cout << m << '\n', 0;
        r %= m; l %= m;
        if (l > r) 
            ilo.push_back({l, m - 1}), ilo.push_back({0, r});
        else
            ilo.push_back({l, r});
    }

    sort(begin(ilo), end(ilo));

    //for (int i = 0; i < ilo.size(); ++i)
        //cerr << ilo[i].st << ' ' << ilo[i].nd << '\n';

    ll c = 0, p = -1;
    for (int i = 0; i < ilo.size(); ++i)
    {
        //cerr << p << ' ' << ilo[i].st << ' ' << ilo[i].nd << ' ';
        c += (max(0ll, ilo[i].nd - max(ilo[i].st - 1, p))), p = max(p, ilo[i].nd);
        //cerr << c << '\n';
    }

    cout << c << '\n';
}

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:47:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < ilo.size(); ++i)
                     ~~^~~~~~~~~~~~
#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...