Submission #770384

#TimeUsernameProblemLanguageResultExecution timeMemory
770384vjudge1Seats (IOI18_seats)C++17
0 / 100
189 ms71968 KiB
#include "seats.h"
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
int pans = 0;
vector<int> x, y, A,B,C,D;
void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
    A.resize(H*W+1);
    B.resize(H*W+1);
    C.resize(H*W+1);
    D.resize(H*W+1);
    A[0] = 2e9;
    C[0]=2e9;
    for(int i = 1; i <=H*W; i++) {
        A[i] = min(A[i-1],x[i]);
        B[i] = max(B[i-1],x[i]);
        C[i] = min(C[i-1],y[i]);
        D[i] = max(D[i-1],y[i]);
        if((B[i]-A[i])*(D[i]-C[i])==i)
            pans++;
    }
    x=R,y=C;
}
int swap_seats(int a, int b) {
    a++;
    int ans = pans;
    swap(x[a],x[b]);
    swap(y[a],y[b]);
    for(int i = a; i <= b; i++) {
        if((B[i]-A[i])*(D[i]-C[i])==i)
            ans--;
        A[i] = min(A[i-1],x[i]);
        B[i] = max(B[i-1],x[i]);
        C[i] = min(C[i-1],y[i]);
        D[i] = max(D[i-1],y[i]);
        if((B[i]-A[i])*(D[i]-C[i])==i)
            ans++;
    }
    return pans = ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...