Submission #1031344

#TimeUsernameProblemLanguageResultExecution timeMemory
1031344AbitoFire (BOI24_fire)C++17
0 / 100
30 ms10020 KiB
#include <bits/stdc++.h>
#define F first
#define S second
#define pb push_back
#define ppb pop_back
#define ep insert
#define endl '\n'
#define elif else if
#define pow pwr
#define sqrt sqrtt
#define int long long
#define ll long long
#define y1 YONE
typedef unsigned long long ull;
using namespace std;
const int N=2e5+5;
int L[N],R[N],n,m;
int32_t main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    cin>>n>>m;
    for (int i=1;i<=n;i++) cin>>L[i]>>R[i];
    int ans1=0,ans2=1;
    vector<pair<int,int>> a;
    vector<int> p(n);
    for (int i=1;i<=n;i++){
        if (L[i]<R[i]) a.pb({L[i],R[i]});
        else a.pb({L[i],m-1});
    }
    sort(a.begin(),a.end());
    a.pb({m-1,m-1});
    p[0]=a[0].S;
    for (int i=1;i<n;i++) p[i]=max(p[i-1],a[i].S);
    int cur=0;
    for (int i=0;i<=n;i++){
        if (a[i].F<=cur) continue;
        ans1++;
        cur=p[i-1];
        if (a[i].F>cur){
            ans1=INT_MAX;
            break;
        }
    }
    if (cur!=m-1) ans1=INT_MAX;
    a.clear();
    int x=m;
    for (int i=1;i<=n;i++){
        if (R[i]) continue;
        x=min(x,L[i]);
    }
    if (x==m){
        if (ans1==INT_MAX) ans1=-1;
        cout<<ans1<<endl;
        return 0;
    }
    if (x==1){
        ans1=min(ans1,1LL);
        cout<<ans1<<endl;
        return 0;
    }
    for (int i=1;i<=n;i++){
        if (!R[i]) continue;
        int l=max(L[i],1LL),r=min(R[i],x-1);
        a.pb({l,r});
    }
    sort(a.begin(),a.end());
    a.pb({x-1,x-1});
    p.resize(a.size());
    p[0]=a[0].S;
    for (int i=1;i<n;i++) p[i]=max(p[i-1],a[i].S);
    cur=1;
    for (int i=0;i<a.size();i++){
        if (a[i].F<=cur) continue;
        ans2++;
        cur=p[i-1];
        if (a[i].F>cur){
            ans2=INT_MAX;
            break;
        }
    }
    if (cur!=x-1) ans2=INT_MAX;
    ans1=min(ans1,ans2);
    if (ans1==INT_MAX) ans1=-1;
    cout<<ans1<<endl;
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int32_t main()':
Main.cpp:71:19: 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]
   71 |     for (int i=0;i<a.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...