/*
بسم الله الرحمن الرحيم
Author:
(:Muhammad Aneeq:)
*/
#pragma GCC optimize("O2")
#pragma GCC optimize("Ofast")
#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <vector>
#include <map>
#warning check the output
using namespace std;
int const N=4e5+10;
pair<int,int>a[N];
int n,m;
bool comp(pair<int,int>b,pair<int,int>c)
{
if (b.second!=c.second)
return b.second<c.second;
return b.first<=c.first;
}
inline void solve()
{
cin>>n>>m;
for (int i=1;i<=n;i++)
{
cin>>a[i].first>>a[i].second;
if (a[i].second<a[i].first)
a[i].second+=m;
}
a[0]={0,0};
sort(a+1,a+n+1);
reverse(a+1,a+n+1);
int dp[n+10][n+10]={};
for (int i=0;i<=n;i++)
{
for (int j=1;j<=n;j++)
dp[i][j]=a[i].second;
}
a[0]=a[1];
for (int i=1;i<=n;i++)
{
if (a[i-1].first>a[i].second)
continue;
for (int j=1;j<=i;j++)
dp[i][j]=max(dp[i-1][j-1],dp[i][j]);
}
int ans=n+1;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
if (dp[i][j]>=a[i].first+m)
{
ans=min(ans,j);
}
}
}
if (ans>n)
ans=-1;
cout<<ans<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}
Compilation message (stderr)
Main.cpp:14:2: warning: #warning check the output [-Wcpp]
14 | #warning check the output
| ^~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |