結果
| 問題 | No.2002 Range Swap Query |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-17 12:24:18 |
| 言語 | C++23(gcc16) (gcc 16.2.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 132 ms / 2,000 ms |
| + 691µs | |
| コード長 | 710 bytes |
| 記録 | |
| コンパイル時間 | 5,348 ms |
| コンパイル使用メモリ | 354,552 KB |
| 実行使用メモリ | 36,972 KB |
| 最終ジャッジ日時 | 2026-10-17 12:24:38 |
| 合計ジャッジ時間 | 12,939 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge4_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 20 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
int n,m,q,a[1000005],b[1000005],l,r,ans[1000005],p[1000005],inv[1000005];
vector<int> c[2][1000005];
int main() {
scanf("%d%d%d",&n,&m,&q);
for (int i=1;i<=m;i++) scanf("%d%d",&a[i],&b[i]);
for (int i=1;i<=q;i++) {
scanf("%d%d%d",&l,&r,&ans[i]);
c[0][l-1].push_back(i);
c[1][r].push_back(i);
}
for (int i=1;i<=n;i++) p[i]=i;
for (int i=1;i<=m;i++) {
swap(p[a[i]],p[b[i]]);
for (auto &&j:c[1][i]) ans[j]=p[ans[j]];
}
for (int i=1;i<=n;i++) p[i]=inv[i]=i;
for (int i=1;i<=m;i++) {
swap(p[a[i]],p[b[i]]);
swap(inv[p[a[i]]],inv[p[b[i]]]);
for (auto &&j:c[0][i]) ans[j]=inv[ans[j]];
}
for (int i=1;i<=q;i++) printf("%d\n",ans[i]);
return 0;
}