P9343 题解
VitrelosTiAFO · · 题解
容易想到当对于 1 x 和 2 x,那么就可以做到每杯酒都至少有
实现这个并不难,开桶分别记录 solve 结束了。
void solve() {
int cnt1 = 0, cnt2 = 0;
memset(vis1, false, sizeof vis1);
memset(vis2, false, sizeof vis2);
scanf ("%d%d", &n, &m);
for (int i = 1; i <= m; i++) scanf ("%d%d", &o[i], &x[i]);
for (int i = 1; i <= m; i++) {
if (o[i] == 1) {
if (vis2[x[i]]) {
cout << i << '\n';
return;
}
if (!vis1[x[i]]) cnt1++, vis1[x[i]] = true;
}
if (o[i] == 2) {
if (vis1[x[i]]) {
cout << i << '\n';
return;
}
if (!vis2[x[i]]) cnt2++, vis2[x[i]] = true;
}
if (cnt2 > 1 || cnt1 == n) {
cout << i << '\n';
return;
}
}
puts("-1");
}