Submission #1370602

#TimeUsernameProblemLanguageResultExecution timeMemory
1370602Godgift42Seats (IOI18_seats)C++20
0 / 100
3316 ms47328 KiB
#include "seats.h"
#include <bits/stdc++.h>
using namespace std;

std::vector<int> r;
vector<int> c;
int h;
int w;
int n;

vector<int> r1;
vector<int> r2;
vector<int> c1;
vector<int> c2;
vector<int> pr;
int cnt=0;
vector<int> wg;

void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
  h=H;
  w=W;
  n=H*W;
  r = R;
  c=C;
  r1.resize(n,r[0]);
  r2.resize(n,r[0]);
  c1.resize(n,c[0]);
  c2.resize(n,c[0]);
  pr.resize(n,1);
  wg.resize(n);
  wg[0]=1;
  cnt=1;
  for(int i=1;i<n;i++){
    r1[i]=min(r1[i-1],r[i]);
    r2[i]=max(r2[i-1],r[i]);
    c1[i]=min(c1[i-1],c[i]);
    c2[i]=max(c2[i-1],c[i]);
    pr[i]=pr[i-1];
    if((r2[i]-r1[i]+1)*(c2[i]-c1[i]+1)==(i+1)){
      pr[i]++;
      wg[i]=1;
      cnt++;
    }
  }
}

int swap_seats(int a, int b) {
  
  swap(r[a],r[b]);swap(c[a],c[b]);
  for(int i=a;i<=b;i++){
    if(i>0){
      r1[i]=min(r1[i-1],r[i]);
      r2[i]=max(r2[i-1],r[i]);
      c1[i]=min(c1[i-1],c[i]);
      c2[i]=max(c2[i-1],c[i]);
    }
    else{
      r1[i]=r[0];
      r2[i]=r[0];
      c1[i]=c[0];
      c2[i]=c[0];
    }
    cnt-=wg[i];
    wg[i]=0;
    if((r2[i]-r1[i]+1)*(c2[i]-c1[i]+1)==(i+1)){
      wg[i]=1;
      cnt++;
    }
  }
  return cnt;
}
#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...