제출 #106194

#제출 시각아이디문제언어결과실행 시간메모리
106194tictaccat자리 배치 (IOI18_seats)C++14
11 / 100
4091 ms48680 KiB
#include "seats.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> R,C;
vector<vector<int>> grid;
int H,W;

int solve_chart(int H, int W) {
  int up = 0, down = H, left = W, right = 0;
  int b = 0;
  for (int k = 1; k <= H*W; k++) {
    up = max(up,R[k-1]);
    down = min(down,R[k-1]);
    left = min(left,C[k-1]);
    right = max(right,C[k-1]);
  //  cout << k << ": " << left << " " << right << " " << down << " " << up;
    if ((right-left+1)*(up-down+1) == k) {
     // cout << " yes";
     // cout << k << "\n";
      b++;
    }
   // cout << "\n";
  }
  return b;
}

void give_initial_chart(int tempH, int tempW, std::vector<int> tempR, std::vector<int> tempC) {
  H = tempH; W = tempW; R = tempR; C = tempC;
  grid.assign(H,vector<int>(W));
  for (int i = 0; i < H*W; i++) grid[tempR[i]][tempC[i]] = i;
}

int swap_seats(int a, int b) {
  swap(grid[R[a]][C[a]], grid[R[b]][C[b]]);
  swap(R[a],R[b]);
  swap(C[a],C[b]);
  return solve_chart(H,W);
// return -1;
}
#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...