結果
問題 |
No.2667 Constrained Permutation
|
ユーザー |
![]() |
提出日時 | 2024-03-09 00:11:57 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,190 bytes |
コンパイル時間 | 2,357 ms |
コンパイル使用メモリ | 204,576 KB |
最終ジャッジ日時 | 2025-02-20 03:18:18 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 14 WA * 32 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ int N; cin>>N; vector<pair<int,int>> S(N); for(int i=0;i<N;i++) cin>>S[i].first>>S[i].second; sort(S.begin(),S.end()); int ind = 0; priority_queue<int,vector<int>,greater<int>> pq; int l = 1e18; for(int i=0;i<N;i++) l = min(l,S[i].first-(i+1)); l = max(0ll,l); int ll = l; for(int i=S[0].first+l;i<S[0].first+N+l;i++){ while(ind != N && S[ind].first <= i){ pq.push(S[ind].second); ind++; } if(pq.empty() || pq.top() < i){ cout<<0<<endl; return 0; } pq.pop(); } for(int z=30;z>=0;z--){ while(pq.size()) pq.pop(); ind = 0; l += (1ll<<z); bool p = true; for(int i=S[0].first+l;i<S[0].first+N+l;i++){ while(ind != N && S[ind].first <= i){ pq.push(S[ind].second); ind++; } if(pq.empty() || pq.top() < i){ p = false; break; } pq.pop(); } if(!p) l -= (1<<z); } cout<<l-ll+1<<endl; }