Submission #1090660

#TimeUsernameProblemLanguageResultExecution timeMemory
1090660BigBadBullyFire (BOI24_fire)C++17
13 / 100
77 ms14476 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define int long long #define pii pair<int, int> #define ff first #define ss second using namespace std; const int inf = 1e17; const int mod = 998244353; void solve() { int n,m; cin >> n >> m; vector<pii> v(n); for (int i = 0; i< n; i++) { cin >> v[i].ff >> v[i].ss; while(v[i].ff>v[i].ss) v[i].ss+=m; } sort(v.begin(),v.end()); { vector<bool> del(n); int maxi = 0; for (int i = 0; i < n;i ++) { if (v[i].ss <= maxi) del[i] = 1; maxi = max(maxi,v[i].ss); } vector<pii> neu; for (int i = 0; i < n; i++) if (!del[i]) neu.push_back(v[i]); n = neu.size(); v = neu; } { vector<bool> del(n); int mini = v[n-1].ss; for (int i = n-1; i >= 0;i--) { if (v[i].ff >= mini) del[i] = 1; mini = min(mini,v[i].ff); } vector<pii> neu; for (int i = 0; i < n; i++) if (!del[i]) neu.push_back(v[i]); n = neu.size(); v = neu; } for (int i = 0; i< n;i++) v[i].ss%=m; /*for (int i = 0; i < n; i++) cout << v[i].ff << ' ' << v[i].ss << '\n';*/ int prev = v[0].ss; int used = 1; if (v[0].ff != 0) { cout << -1 << '\n'; return; } for (int i = 1; i < n; i++) { if (v[i].ff > prev) { used++; prev = v[i-1].ss; if (v[i].ff > prev) { cout << -1 << '\n'; return; } } if (prev != 0 && v[i].ss == 0) { used++; prev = inf; break; } } if(prev == inf) cout << used << '\n'; else cout << -1 << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); 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...