Submission #1267193

#TimeUsernameProblemLanguageResultExecution timeMemory
1267193gvancakFire (BOI24_fire)C++20
40 / 100
2095 ms19012 KiB
#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];
	//	if (b[y]<=p[i].s) mx[p[i].s]=-1;
	}
	
	
/*	for (int i=1; i<=n; i++){
		cout<<p[i].s<<" "<<mx[p[i].s]<<endl;
	}*/
	
	
	ans=-1;
	for (int i=1; i<=n; i++){
		//pirvelia i
		z=1;
		x=p[i].s; ok=0;
		while (x<p[i].f+m){
			y=mx[x];
			if (y<=x){
				ok=1; break;
			}
			x=y;
			z++;
		}
		if (ok) continue;
		if (ans==-1) ans=z;
		ans=min(ans,z);
	
	}
	
	cout<<ans<<endl;
	

}
#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...