제출 #1141580

#제출 시각아이디문제언어결과실행 시간메모리
1141580ghammazhassanFire (BOI24_fire)C++20
14 / 100
2094 ms12976 KiB
// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
using namespace std;
#define int long long
#define endl "\n";
const int N=2e5+5;
const int M=1e9+7;
void solve()
{
	int n,m;
	cin >> n >> m;
	vector<int>l,r;
	vector<pair<int,int>>a;
	for (int i=0;i<n;i++){
		int x,y;
		cin >> x >> y;
		if (x>y){
			y+=m;
		}
		a.push_back({x,y});
	}
	sort(a.begin(),a.end());
	for (int i=0;i<n;i++){
		int x=a[i].first;
		int y=a[i].second;
		l.push_back(x);
		r.push_back(y);
	}
	for (int i=0;i<n;i++){
		l.push_back(l[i]+m);
		r.push_back(r[i]+m);
	}
	int u=0;
	int j=0;
	for (int i=0;i<n;i++){
		if (r[i]-l[i]>u){
			j=i;
			u=r[i]-l[i];
		}
	}
	int mi=l[j];
	int mx=r[j];
	int c=1;
	while (mx-mi<m){
		int u=0;
		int f=0;
		for (int i=0;i<2*n;i++){
			if (l[i]<=mx and r[i]-mx>u){
				f=i;
				u=r[i]-mx;
			}
		}
		if (u==0){
			break;
		}
		mx+=u;
		c++;
	}
	if (mx-mi>=m){
		cout << c << endl;
	}
	else{
		cout << -1 << endl;
	}
}
signed main()
{

    ios::sync_with_stdio(0);//DO NOT USE IN INTERACTIVE
    cin.tie(0), cout.tie(0);//DO NOT USE IN INTERACTIVE
    cout << fixed<<setprecision(9);
    int t=1;
    // cin >> t;
    for (int _=1;_<=t;_++){
    	solve();
    }
}
#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...