This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
#include "seats.h"
using namespace std;
vector <vector <int>> a;
vector <int> row, col;
int h, w;
bool inside(int x, int y) {
return (0 <= x && x < h) && (0 <= y && y < w);
}
bool isOkay(int R) {
int total = 0;
for(int i = 0; i <= R; i++) {
for(int dx : {-1, 1}) {
for(int dy : {-1, 1}) {
int x = row[i];
int y = col[i];
int cnt = 0;
if(!inside(x + dx, y) || a[x + dx][y] > R) ++cnt;
if(!inside(x, y + dy) || a[x][y + dy] > R) ++cnt;
if(cnt == 2) ++total;
}
}
}
for(int i = R + 1; i < h * w; i++) {
for(int dx : {-1, 1}) {
for(int dy : {-1, 1}) {
int x = row[i];
int y = col[i];
int cnt = 0;
if(inside(x + dx, y) && a[x + dx][y] <= R) ++cnt;
if(inside(x, y + dy) && a[x][y + dy] <= R) ++cnt;
if(cnt == 2) ++total;
}
}
}
return (total == 4);
}
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
h = H;
w = W;
a = vector <vector <int>> (H, vector <int> (W, 0));
row = R;
col = C;
for(int i = 0; i < H * W; i++) {
a[row[i]][col[i]] = i;
}
}
int swap_seats(int p, int q) {
swap(a[row[p]][col[p]], a[row[q]][col[q]]);
swap(row[p], row[q]);
swap(col[p], col[q]);
int ans = 0;
for(int i = 0; i < h * w; i++) {
ans += isOkay(i);
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |