結果

問題 No.2543 Many Meetings
ユーザー srjywrdnprkt
提出日時 2024-10-21 10:29:26
言語 C++17(gcc12)
(gcc 12.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,352 bytes
コンパイル時間 3,045 ms
コンパイル使用メモリ 210,188 KB
実行使用メモリ 11,220 KB
最終ジャッジ日時 2024-10-21 10:29:35
合計ジャッジ時間 7,786 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 WA * 1
other AC * 9 WA * 31
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
ll N, K, L, R, r=1, ans=1e18;
cin >> N >> K;
K--;
vector<pair<ll, ll>> RL(N+1);
for (int i=1; i<=N; i++){
cin >> L >> R;
RL[i] = {R, L};
}
if (K == 1){
for (auto [R, L] : RL) ans = min(ans, R-L);
cout << ans << endl;
return 0;
}
sort(RL.begin(), RL.end());
/*
f(i) = i
R_i<=L_jR_j
f^(K-1)(i)<=NOK
*/
vector<ll> dp(N+2), v(N+2);
for (int l=1; l<=N; l++){
while(r <= N && RL[l].first > RL[r].second) r++;
dp[l] = r;
}
iota(v.begin(), v.end(), 0);
dp[N+1] = N+1;
//for (int i=1; i<=N; i++) cout << dp[i] << " ";
//cout << endl;
while(K){
if (K&1){
for (int i=1; i<=N; i++) v[i] = v[dp[i]];
}
vector<ll> pd(N+2);
for (int i=1; i<=N; i++) pd[i] = dp[dp[i]];
swap(dp, pd);
K >>= 1;
}
for (int i=1; i<=N; i++){
if (v[i] <= N){
ans = min(ans, RL[v[i]].first-RL[i].second);
}
}
cout << (ans != 1e18 ? ans : -1) << endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0