アップルジャックとストレージ

アップルジャックとストレージ
ここに写真の説明を挿入

題名

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;
}

おすすめ

転載: blog.csdn.net/weixin_43601103/article/details/112802367