제출 #592909

#제출 시각아이디문제언어결과실행 시간메모리
592909SofiatpcSimple game (IZhO17_game)C++14
22 / 100
1079 ms5432 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1000005;
int N,M, h[MAXN];
int marc[MAXN];

int main()
{
    cin>>N>>M;
    for(int i = 1; i <= N; i++)cin>>h[i];
    for(int i = 1; i <= N; i++)
    {
        if(i==N)
        {
            marc[h[i]]++;
            break;
        }
        int s = min(h[i],h[i+1]), f = max(h[i],h[i+1]);
        if(s==f)
        {
            marc[s]++;
            continue;
        }
        for(int k = s; k < f; k++)marc[k]++;
    }

    for(int m = 1; m <= M; m++)
    {
        int q; cin>>q;
        if(q==1)
        {
            int p,v; cin>>p>>v;

            if(p==N) marc[h[p]]--;
            else
            {
                int ls = min(h[p],h[p+1]), lf = max(h[p],h[p+1]);
                for(int k = ls; k < lf; k++)marc[k]--;

                int s = min(v,h[p+1]), f = max(v,h[p+1]);
                for(int k = s; k < f; k++)marc[k]++;
            }

            if(p!=1)
            {
                int ls = min(h[p],h[p-1]), lf = max(h[p],h[p-1]);
                for(int k = ls; k < lf; k++)marc[k]--;

                int s = min(v,h[p-1]), f = max(v,h[p-1]);
                for(int k = s; k < f; k++)marc[k]++;
            }
            h[p]=v;
        }
        else
        {
            int x; cin>>x;
            cout<<marc[x]<<"\n";
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...