#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
//#define mp make_pair
#define ll long long
using namespace std;
ll mod=1e9+7;
const ll N=2*1e5;
ll a[N+5],l,r,x,y,z,ans,t,n,q,mn,k,m,b[N+5];
map <ll,ll> mx,mp;
bool ok,okk;
set <ll> s;
pair <ll,ll> p[N+5];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for (int i=1; i<=n; i++){
cin>>p[i].f>>p[i].s;
}
sort(p+1,p+n+1);
for (int i=1; i<=n; i++){
if (p[i].f>p[i].s) b[0]=max(b[0],p[i].s),p[i].s+=m;
}
for (int i=1; i<=n; i++){
b[i]=max(b[i-1],p[i].s);
}
for (int i=1; i<=n; i++) a[i]=p[i].f;
for (int i=1; i<=n; i++){
x=p[i].s;
if (x>a[n]) y=n;
else y=upper_bound(a+1,a+n+1,x)-a-1;
mx[p[i].s]=b[y];
}
/* for (int i=1; i<=n; i++){
cout<<p[i].s<<" "<<mx[p[i].s]<<endl;
}*/
/* ans=n;
for (int i=1; i<=n; i++){
//pirvelia i
z=1;
x=p[i].s;
while (x<p[i].f+m){
}
}*/
mp.clear();
ans=1;
for (int i=1; i<=n; i++){
mp[mx[p[i].s]]++;
if (mp[mx[p[i].s]]==1) ans++;
}
for (int i=1; i<=n; i++) x=max(x,p[i].s);
if (p[1].f+m>x) ans=-1;
cout<<ans<<endl;
}
# | 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... |