题意
有 n 条边,给出对应的长度,有 m 次询问,每次会 ‘+’:添加一根木棒,或 ‘-’:减少一根木棒,问是否可以组成一个正方形和一个长方形,这两个四边形不可以重合,减少时,保证一定拥有这种长度的木棒
#include <bits/stdc++.h>
using namespace std;
int n, x, cnt2, cnt4;
unordered_map<int, int> ma;
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &x);
ma[x]++;
if (ma[x] % 2 == 0) cnt2++;
if (ma[x] % 4 == 0) cnt4++;
}
int q;
scanf("%d", &q);
while (q--) {
char op[2];
scanf("%s", op);
scanf("%d", &x);
if (op[0] == '+') {
ma[x]++;
if (ma[x] % 2 == 0) cnt2++;
if (ma[x] % 4 == 0) cnt4++;
} else {
if (ma[x] % 2 == 0) cnt2--;
if (ma[x] % 4 == 0) cnt4--;
ma[x]--;
}
if (cnt2 >= 4 && cnt4 >= 1)puts("YES");
else puts("NO");
}
return 0;
}