이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "seats.h"
#include <bits/stdc++.h>
using namespace std;
int H, W, N, cx[1000009], cy[1000009], lx[1000009], ly[1000009], rx[1000009], ry[1000009], sum;
int calc(int p1, int p2, int p3, int p4) {
return (p3 - p1 + 1) * (p4 - p2 + 1);
}
void refresh(int L, int R) {
for (int i = 1; i <= N; i++) {
if (calc(lx[i], ly[i], rx[i], ry[i]) == i) sum--;
lx[i] = min(lx[i - 1], cx[i - 1]);
ly[i] = min(ly[i - 1], cy[i - 1]);
rx[i] = max(rx[i - 1], cx[i - 1]);
ry[i] = max(ry[i - 1], cy[i - 1]);
if (calc(lx[i], ly[i], rx[i], ry[i]) == i) sum++;
}
}
void give_initial_chart(int HH, int WW, std::vector<int> RR, std::vector<int> CC) {
H = HH; W = WW; N = H * W;
for (int i = 0; i < N; i++) {
cx[i] = RR[i]; cy[i] = CC[i];
}
for (int i = 0; i <= N; i++) { lx[i] = H; ly[i] = W; rx[i] = -100; ry[i] = -100; }
refresh(1, N);
}
int swap_seats(int a, int b) {
swap(cx[a], cx[b]);
swap(cy[a], cy[b]);
refresh(a + 1, b + 1);
return sum;
}
# | 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... |