제출 #1330721

#제출 시각아이디문제언어결과실행 시간메모리
1330721Faisal_Saqib자리 배치 (IOI18_seats)C++17
0 / 100
2310 ms39476 KiB
#include "seats.h"
#include <iostream>
using namespace std;
const int N=1e6+100;
int mxi[N],mxa[N],myi[N],mya[N],tot=0;
vector<int> R,C;
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
  ::R=R;
  ::C=C;
  mxi[0]=1e9;
  mxa[0]=-mxi[0];
  myi[0]=1e9;
  mya[0]=-myi[0];
  for(int i=0;i<R.size();i++)
  {
    mxi[i+1]=min(mxi[i],R[i]);
    mxa[i+1]=max(mxa[i],R[i]);
    
    myi[i+1]=min(myi[i],C[i]);
    mya[i+1]=max(mya[i],C[i]);
    // cout<<(mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1)<<' '<<i+1<<endl;
    if(1ll*(mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1) == i+1)
    {

      tot++;
    }
  }

}

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(1ll*(mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1) == i+1)
    {
      tot--;
    }
    mxi[i+1]=min(mxi[i],R[i]);
    mxa[i+1]=max(mxa[i],R[i]);
    
    myi[i+1]=min(myi[i],C[i]);
    mya[i+1]=max(mya[i],C[i]);
    
    if(1ll*(mxa[i+1]-mxi[i+1]+1) * (mya[i+1]-myi[i+1]+1) == i+1)
    {
      tot++;
    }
  }
  return tot;
}
#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...