Submission #1141659

#TimeUsernameProblemLanguageResultExecution timeMemory
1141659ghammazhassanFire (BOI24_fire)C++20
40 / 100
870 ms25724 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; int o1=0,o2=1e9; for (int i=0;i<n;i++){ int x,y; cin >> x >> y; if (x>y){ y+=m; } o1=max(o1,y-x); o2=min(o2,y-x); 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<2*n;i++){ l.push_back(l[i]+m); r.push_back(r[i]+m); } if (o1==o2){ vector<int>ai; for (int i=0;i<3*n;i++){ ai.push_back(l[i]); } int o=o1; int j=0; int mi=l[j]; int mx=r[j]; int c=1; int u1=-1; while (mx-mi<m){ int u=0; int y=0; int f=0; int L=0,H=3*n-1,M=(L+H+1)/2; while (L<H){ if (ai[M]>mx){ H=M-1; } else{ L=M; } M=(L+H+1)/2; } if (u1==-1){ u1=0; mi=ai[M]; mx=mi+o; continue; } if (mx>=ai[M]+o){ break; } mx=ai[M]+o; c++; } if (mx-mi>=m){ cout << c << endl; } else{ cout << -1 << endl; } return; } 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; int u1=-1; int u2=-1; while (mx-mi<m){ int u=0; int y=0; int f=0; for (int i=0;i<3*n;i++){ if (l[i]<=mx and r[i]-mx>u){ f=i; u=r[i]-mx; } } if (u1==-1){ u1=0; mi=l[f]; mx=r[f]; continue; } 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...