2019 KCPC cake

2019 KCPC 초코칩 케이크 (신입생 부문 D번) 코드 제출 url

난이도가 조금 어려워졌습니다. 이제부터는 C++로 설명드리겠습니다.

아이디어성 문제입니다. 쿼리마다 초코를 뿌리고 모든 초코칩 케이크 조각을 검사하는 방법으로는 시간복잡도가 $ O(n^2q) $ 이므로 다른 아이디어를 생각해봐야 합니다.

이 문제를 풀기 위한 아이디어는 다음과 같습니다.

#include <bits/stdc++.h>
using namespace std;
const int SZ=30005;
int xx[SZ];
int yy[SZ];
int main(void){
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int n,q; cin>>n>>q;
    int mx=0,my=0;
    int cx=n,cy=n;
    while(q--){
        int a,b; cin>>a>>b;
        if(a==1){
            xx[b]++;
            if(xx[b]>mx){
                cx=1;
                mx=xx[b];
            }
            else if(xx[b]==mx) cx++;
        }
        else{
            yy[b]++;
            if(yy[b]>my){
                cy=1;
                my=yy[b];
            }
            else if(yy[b]==my) cy++;
        }
        cout<<cx*cy<<'\n';
    }
    return 0;
}