Submission #1084284

#TimeUsernameProblemLanguageResultExecution timeMemory
1084284De3b0oFire (BOI24_fire)C++17
40 / 100
121 ms11460 KiB
#include<bits/stdc++.h> #include<random> #define ll long long #define F first #define S second #define in insert #define pb push_back #define ppb pop_back() #define d3 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define cans cout << ans << "\n"; #define yes cout << "Yes" << "\n"; #define no cout << "No" << "\n"; #define pll pair<ll,ll> #define lin cout << "\n"; #define sqr 340 #define mod 1000000007 #define mid ((l+r)/2) #define lc (2*x) #define rc (2*x+1) #define sq 547 using namespace std; ll n , m; vector<pll> v; ll ans; ll l[200009] , r[200009]; ll idx; void pro(ll s , ll e , ll t) { bool g = 1; ll ans1 = t; ll id = s; while(id<=e) { while(idx<v.size()) { if(v[idx].F<=id) idx++; else break; } if(idx==0) { g=0; break; } ll ne = v[idx-1].S; if(ne<id) { g=0; break; } ans1++; id=ne+1; } if(g&&ans1!=1) ans=min(ans,ans1); } int main() { cin >> n >> m; ans=n+1; for(int i = 0 ; n>i ; i++) cin >> l[i] >> r[i]; for(int i = 0 ; n>i ; i++) { ll x = l[i] , y = r[i]; if(x>y) y=m-1; v.pb({x,y}); } sort(v.begin(),v.end()); for(int i = 1 ; v.size()>i ; i++) v[i].S=max(v[i].S,v[i-1].S); ll mn = 1e10 , id1 = -1; ll mx = -1 , id2 = -1; ll mnn = 1e10; bool ws = 0; ll d = 0; for(int i = 0 ; n>i ; i++) { if(min(l[i],r[i])==0&&max(l[i],r[i])==m-1) ws=1; if(l[i]==0||r[i]==m-1||l[i]>r[i]) d++; if(l[i]>r[i]) { if(r[i]==0) { mnn=min(mnn,l[i]); } if(l[i]<mn) { mn=l[i]; id1=i; } else if(l[i]==mn&&r[i]>r[id1]) { mn=l[i]; id1=i; } if(r[i]>mx) { mx=r[i]; id2=i; } else if(r[i]==mx&&l[i]<l[id2]) { mx=r[i]; id2=i; } } } pro(0,m-1,0); idx=0; if(id1!=-1) { idx=0; pro(r[id1]+1,l[id1]-1,1); } if(id2!=-1) { idx=0; pro(r[id2]+1,l[id2]-1,1); } idx=0; if(mnn!=1e10) pro(1,mnn-1,1); if(ws&&d>1) ans=2; if(ans==n+1) ans=-1; cans }

Compilation message (stderr)

Main.cpp: In function 'void pro(long long int, long long int, long long int)':
Main.cpp:37: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]
   37 |         while(idx<v.size())
      |               ~~~^~~~~~~~~
Main.cpp: In function 'int main()':
Main.cpp:76:29: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   76 |     for(int i = 1 ; v.size()>i ; 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...