Submission #1332735

#TimeUsernameProblemLanguageResultExecution timeMemory
1332735activedeltorreSeats (IOI18_seats)C++20
17 / 100
4091 ms39720 KiB
#include "seats.h"
using namespace std;
#include <cstdio>
#include <cstdlib>
#include <vector>
std::vector<int> r;
int hmax[1000005];
int hmin[1000005];
int wmax[1000005];
int wmin[1000005];
int x[1000005];
int y[1000005];
int cnt=0;
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
    int n=H*W;
    for(int i=0;i<n;i++)
    {
        x[i]=R[i];
        y[i]=C[i];
    }
    hmax[0]=x[0];
    hmin[0]=x[0];
    wmax[0]=y[0];
    wmin[0]=y[0];
    cnt=1;
    for(int i=1;i<=H*W;i++)
    {
        hmax[i]=max(x[i],hmax[i-1]);
        hmin[i]=min(x[i],hmin[i-1]);
        wmax[i]=max(y[i],wmax[i-1]);
        wmin[i]=min(y[i],wmin[i-1]);
        if((hmax[i]-hmin[i]+1)*(wmax[i]-wmin[i]+1)==i+1)
        {
            cnt++;
        }
    }
}

int swap_seats(int a, int b) {
    if(a>b)
    {
        swap(a,b);
    }
    for(int i=a;i<=b;i++)
    {
        if((hmax[i]-hmin[i]+1)*(wmax[i]-wmin[i]+1)==i+1)
        {
            cnt--;
        }
    }
    swap(x[a],x[b]);
    swap(y[a],y[b]);
    if(a==0)
    {
        hmax[0]=x[0];
        hmin[0]=x[0];
        wmax[0]=y[0];
        wmin[0]=y[0];
        cnt++;
    }
    for(int i=max(1,a);i<=b;i++)
    {
        hmax[i]=max(x[i],hmax[i-1]);
        hmin[i]=min(x[i],hmin[i-1]);
        wmax[i]=max(y[i],wmax[i-1]);
        wmin[i]=min(y[i],wmin[i-1]);
        if((hmax[i]-hmin[i]+1)*(wmax[i]-wmin[i]+1)==i+1)
        {
            cnt++;
        }
    }
    return cnt;
}
#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...