Submission #1027576

#TimeUsernameProblemLanguageResultExecution timeMemory
1027576IssaFire (BOI24_fire)C++17
21 / 100
43 ms8532 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 <= 1; 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; } } int x = 0, y = 0, cnt = 0; sort(b + 1, b + n + 1, [](pii i, pii j){ if(i.first != j.first) return i < j; return i.second > j.second; }); for(int j = 1; j <= n && x < m; j++){ if(f(b[i].first, b[j].first) > x){ x = y; cnt++; } if(f(b[i].first, b[j].first) <= x){ y = max(y, f(b[i].first, b[j].second)); } else cnt = inf; } if(x < m) x = y, cnt++; if(x >= m) ans = min(ans, cnt); } 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...