Submission #1369747

#TimeUsernameProblemLanguageResultExecution timeMemory
1369747ereringSeats (IOI18_seats)C++20
17 / 100
4094 ms40896 KiB
#include <bits/stdc++.h>
#include "seats.h"
using namespace std;
std::vector<int> r,c;
const int MAXN=1e6+6;
bool pos[MAXN];
int ans=0,pref[MAXN][4];
void update(int l,int rt){
    for(int i=l;i<=rt;i++){
        pref[i][0]=pref[i][1]=r[i];
        pref[i][2]=pref[i][3]=c[i];
        if(i){
            pref[i][0]=min(pref[i][0],pref[i-1][0]);
            pref[i][1]=max(pref[i][1],pref[i-1][1]);
            pref[i][2]=min(pref[i][2],pref[i-1][2]);
            pref[i][3]=max(pref[i][3],pref[i-1][3]);
        }
        if(pos[i])ans--;
        pos[i]=0;
        if((pref[i][1]-pref[i][0]+1)*(pref[i][3]-pref[i][2]+1)==i+1)pos[i]=1;
        if(pos[i])ans++;
    }
}
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
    r=R;
    c=C;
    update(0,R.size()-1);
}

int swap_seats(int a, int b) {
    if(a>b)swap(a,b);
    swap(r[a],r[b]); swap(c[a],c[b]);
    update(a,b);
    return ans;
}
//resubmit
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...