【题解】[ABC448C] Except and Min
zsTree
·
·
题解
获得更好的阅读体验。
题目传送门:AtCoder | Luogu
题意
共有 N 个球,第 i 个球有一个整数 A_i。
## 思路
用结构体记录第 $i$ 个球的值和编号,把 $A$ 按值从小到大排序一遍。
注意到 $1\le K\le 5$。
每次操作先枚举所有球 $A_i(1\le i\le N)$,再枚举被删除的球的编号 $B_j(1\le j\le K)$。如果球 $A_i$ 的编号等于 $B_j$,说明球被删除了。第一个枚举到没有被删除的球的值即为所有剩下的球对应整数的最小值。
## 代码
```cpp
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 3e5 + 10;
struct {
int x, id;
} a[N];
int b[N];
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i].x;
a[i].id = i;
}
sort(a + 1, a + n + 1, [&](const auto& x, const auto& y) {
return x.x < y.x;
});
while (q--) {
int k;
cin >> k;
for (int i = 1; i <= k; i++) cin >> b[i];
for (int i = 1; i <= n; i++) {
bool f = false;
for (int j = 1; j <= k; j++)
if (a[i].id == b[j])
f = true;
if (f) continue;
cout << a[i].x << '\n';
break;
}
}
return 0;
}
```