Submission #582928

#TimeUsernameProblemLanguageResultExecution timeMemory
582928groshiStrange Device (APIO19_strange_device)C++17
100 / 100
557 ms77788 KiB
#include<iostream>
#include<vector>
#include<algorithm>
#include<utility>
#include<string>
#include<queue>
using namespace std;
#define int long long
vector<pair<int,int> > Q,pom;
int32_t main()
{
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(0);
    long long n,a,b,x,y;
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++)
    {
        cin>>x>>y;
        Q.push_back({x,y});
    }
    sort(Q.begin(),Q.end());
    bool cale=0;
    int cos=a*b/__gcd(a,b+1);
    if(1e18/a>=b)
        for(int i=0;i<Q.size();i++)
        {
            if(Q[i].second-Q[i].first+1>=cos)
                cale=1;
        }
    else{
        int suma=0;
        for(int i=0;i<Q.size();i++)
            suma+=(Q[i].second-Q[i].first+1);
        cout<<suma;
        return 0;
    }
    if(cale==1)
    {
        cout<<a*b;
        return 0;
    }
    for(int i=0;i<Q.size();i++)
    {
        if(Q[i].second%cos>=Q[i].first%cos)
        pom.push_back({Q[i].first%cos,Q[i].second%cos});
        else{
            pom.push_back({Q[i].first%cos,cos-1});
            pom.push_back({0,Q[i].second%cos});
        }
    }
    sort(pom.begin(),pom.end());
    int wynik=0;
    int maxx=-1;
    maxx=pom[0].second;
    int pocz=pom[0].first;
    for(int i=1;i<pom.size();i++)
    {
        if(pom[i].first>maxx)
        {
            wynik+=maxx-pocz+1;
            pocz=pom[i].first;
            maxx=pom[i].second;
        }
        else maxx=max(maxx,pom[i].second);
    }
    wynik+=maxx-pocz+1;
    cout<<wynik;
    return 0;
}

Compilation message (stderr)

strange_device.cpp: In function 'int32_t main()':
strange_device.cpp:26:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |         for(int i=0;i<Q.size();i++)
      |                     ~^~~~~~~~~
strange_device.cpp:33:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |         for(int i=0;i<Q.size();i++)
      |                     ~^~~~~~~~~
strange_device.cpp:43:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for(int i=0;i<Q.size();i++)
      |                 ~^~~~~~~~~
strange_device.cpp:57:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |     for(int i=1;i<pom.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...