Submission #1182314

#TimeUsernameProblemLanguageResultExecution timeMemory
1182314ZeroCoolSimple game (IZhO17_game)C++20
100 / 100
35 ms9544 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;


#define int long long
#define ll long long
#define ld long double
#define ar array
#define all(v) v.begin(), v.end()

using namespace std;



const int N = 1e6 + 20;
const int LOG = 20;
const int INF = 1e12;
const int MOD = 1e9 + 7;

void chmin(int &x,int y){x = min(x, y);};
void chmax(int &x,int y){x = max(x, y);};
void mm(int &x){x = (x % MOD + MOD) % MOD;};

int fwt[N];
void upd(int i,int v){
    for(i++;i < N;i += i & -i)fwt[i] += v;
}

void upd(int a,int b,int v){
    if(a > b)swap(a, b);
    upd(a, v);
    upd(b + 1, -v);
}

int qry(int i){
    int ans = 0;
    for(i++;i;i -= i & -i)ans += fwt[i];
    return ans;
}

signed main(){ios_base::sync_with_stdio(false);cin.tie(0);
    int n, m;
    cin>>n>>m;
    int A[n];
    for(int i = 0;i < n;i++)cin>>A[i];
    for(int i = 0;i + 1 < n;i++)upd(A[i], A[i + 1], 1);
    while(m--){
        int qt;
        cin>>qt;
        if(qt == 1){    
            int i;
            cin>>i;
            --i;
            if(i)upd(A[i - 1], A[i], -1);
            if(i + 1 < n)upd(A[i], A[i + 1], -1);
            cin>>A[i];
            if(i)upd(A[i - 1], A[i], 1);
            if(i + 1 < n)upd(A[i], A[i + 1], 1);
        }else{
            int x;
            cin>>x;
            cout<<qry(x)<<'\n';
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...