제출 #1105219

#제출 시각아이디문제언어결과실행 시간메모리
1105219alexddFire (BOI24_fire)C++17
40 / 100
2068 ms3404 KiB
#include <bits/stdc++.h> using namespace std; const int INF = 1e9; int n,m; pair<int,int> v[200005]; int nxt[200005]; void calc_nxt() { for(int i=1;i<=n;i++) { int mxm=v[i].second; nxt[i]=-1; for(int j=1;j<=n;j++) { if(j==i) continue; if(v[j].first <= v[i].second && v[j].second > mxm) { mxm = v[j].second; nxt[i] = j; } } //cout<<i<<" "<<nxt[i]<<" nxt\n"; } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>v[i].first>>v[i].second; if(v[i].first > v[i].second) v[i].second += m; } calc_nxt(); int rez=INF; for(int i=1;i<=n;i++) { if(v[i].second >= m) { int unde=-1,mxm=-1; for(int j=1;j<=n;j++) { if(i!=j && v[j].first <= v[i].second-m) { if(v[j].second > mxm) { mxm = v[j].second; unde = j; } } } //cout<<i<<" "<<unde<<" incearca\n"; int cur=unde,cnt=1; while(cur!=-1) { cnt++; if(v[cur].second >= v[i].first) break; //cout<<cur<<" cur\n"; cur = nxt[cur]; } if(cur!=-1) rez = min(rez, cnt); } } if(rez==INF) rez=-1; cout<<rez; return 0; }
#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...