結果
| 問題 |
No.2288 Somen Sliders
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-04-28 23:44:48 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,599 bytes |
| コンパイル時間 | 2,331 ms |
| コンパイル使用メモリ | 199,720 KB |
| 最終ジャッジ日時 | 2025-02-12 15:44:50 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 19 RE * 11 |
ソースコード
#include <bits/stdc++.h>
using i64 = long long;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int N, X, Y;
std::cin >> N >> X >> Y;
std::vector<std::vector<int>> a(X), b(Y);
std::vector ida(N + 2, -1), idb(N + 2, -1), oa(N + 2, -1), ob(N + 2, -1);
std::vector<int> pa(X), pb(X);
for (int i = 0; i < X; i++) {
int k;
std::cin >> k;
a[i].resize(k + 1);
for (int j = 0; j <= k; j++) {
std::cin >> a[i][j];
ida[a[i][j]] = i;
oa[a[i][j]] = j;
}
pa[i] = k;
}
for (int i = 0; i < Y; i++) {
int k;
std::cin >> k;
b[i].resize(k + 1);
for (int j = 0; j <= k; j++) {
std::cin >> b[i][j];
idb[b[i][j]] = i;
ob[b[i][j]] = j;
}
pb[i] = k;
}
std::function<void(int)> extend = [&](int i) {
while (pb[i]) {
int x = b[i][pb[i]];
if (ida[x] != -1 && pa[ida[x]] > oa[x]) {
break;
}
pb[i]--;
}
if (!pb[i]) {
return;
}
int x = b[i][pb[i]];
int u = a[ida[x]][pa[ida[x]]];
pa[ida[x]] = oa[x];
if (u != N + 1 && idb[u] != -1) {
extend(idb[u]);
}
};
for (int i = 0; i < Y; i++) {
extend(i);
}
int ans = 0;
for (int i = 0; i < X; i++) {
ans += pa[i];
}
std::cout << ans << "\n";
return 0;
}