Submission #742760

#TimeUsernameProblemLanguageResultExecution timeMemory
742760speedyArda이상한 기계 (APIO19_strange_device)C++14
100 / 100
2814 ms169464 KiB
#include "bits/stdc++.h"

using namespace std;
using ll = long long;
const int MAXN = 2e6+5;
map<ll, bool> visited;
vector< pair<ll, ll> > imp;
ll n, a, b;
ll _gcd(ll x, ll y)
{
    if(x < y)
        swap(x, y);
    if(y == 0)
        return x;
    return _gcd(y, x % y);
}
int main() 
{

    cin >> n >> a >> b;
    ll sum = 0;
    ll big = 1;
    map<pair<ll, ll>, bool> used;
    ll time = 0;
    ll gcd_val = _gcd(a, (b+1LL));
    if(2e18 / b * gcd_val < a)
    {
        big = 2e18;
    } else
        big = a * b / gcd_val;

    for(int i = 1; i <= n; i++)
    {

        ll f, s;
        cin >> f >> s;

        if(s - f >= big - 1)
        {
            imp.push_back({0, 1});
            imp.push_back({big - 1, 2});
        } else 
        {
            if(f % big <= s % big)
            {
                imp.push_back({f % big, 1});
                imp.push_back({s % big, 2});
            } else 
            {
                imp.push_back({0, 1});
                imp.push_back({s % big, 2});
                imp.push_back({f % big, 1});
                imp.push_back({big - 1, 2});
            }

        }

       
    }

   // cout << seg[0].sum << "\n";
    sort(imp.begin(), imp.end());
        ll cnt = 0;
        ll ans = 0;
        ll last = -1;
        for(pair<ll, ll> e : imp)
        {
            //cout << ans << " " << cnt << " " << last << "\n";
            if(last != -1 && cnt > 0)
            {
                ans += e.first - last;
                if(!visited[last])
                {
                    ans++;
                    visited[last] = true;
                }
                visited[e.first] = true;
            }
            if(e.second == 1)
            {
                cnt++;
                last = e.first;
            } else 
            {   
                cnt--;
                last = e.first;
            }   
        }
        cout << ans << "\n";
}

Compilation message (stderr)

strange_device.cpp: In function 'int main()':
strange_device.cpp:21:8: warning: unused variable 'sum' [-Wunused-variable]
   21 |     ll sum = 0;
      |        ^~~
strange_device.cpp:24:8: warning: unused variable 'time' [-Wunused-variable]
   24 |     ll time = 0;
      |        ^~~~
#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...