結果
| 問題 |
No.2667 Constrained Permutation
|
| コンテスト | |
| ユーザー |
keisuke6
|
| 提出日時 | 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;
}
keisuke6