#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)
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;
for(int i = 0 ; n>i ; i++)
{
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;
}
}
}
idx=0;
pro(0,m-1,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;
pro(1,mnn-1,1);
if(ans==n+1)
ans=-1;
if(ans==-1)
return -1;
cans
}
Compilation message
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++)
| ~~~~~~~~^~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Runtime error |
1 ms |
348 KB |
Execution failed because the return code was nonzero |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Runtime error |
1 ms |
348 KB |
Execution failed because the return code was nonzero |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Runtime error |
1 ms |
348 KB |
Execution failed because the return code was nonzero |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
0 ms |
344 KB |
Execution failed because the return code was nonzero |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
0 ms |
348 KB |
Execution failed because the return code was nonzero |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Runtime error |
1 ms |
348 KB |
Execution failed because the return code was nonzero |
3 |
Halted |
0 ms |
0 KB |
- |