제출 #1027559

#제출 시각아이디문제언어결과실행 시간메모리
1027559IssaFire (BOI24_fire)C++17
0 / 100
1 ms2396 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define ent "\n" const int maxn = 3e5 + 100; const ll INF = (ll)1e18 + 100; const int inf = 1e9 + 100; const int MOD = 1e9 + 7; const int maxl = 350; const int P = 31; int n, m; pii a[maxn]; pii b[maxn]; int f(int i, int j){ if(j >= i) return j - i; return m + j - i; } void test(){ cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> a[i].first >> a[i].second; } int ans = inf; for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ b[j] = a[j]; if(a[j].first < a[i].first){ b[j].first += m; b[j].second += m; } else if(a[j].second < a[j].first){ b[j].second += m; } } sort(b + 1, b + n + 1, [](pii i, pii j){ if(i.first != j.first) return i < j; return i.second > j.second; }); vector<int> v; for(int i = n; i > 0; i--){ while(v.size() && b[v.back()].second <= b[i].second) v.pop_back(); while(v.size() > 1 && b[v[v.size()-2]].first <= b[i].second) v.pop_back(); v.push_back(i); } if(b[v[0]].second - b[v.back()].first > m) ans = min(ans, (int)v.size()); } if(ans == inf) ans = -1; cout << ans; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; t = 1; while(t--) test(); cout << ent; }
#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...