이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "seats.h"
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int min_x[N], max_x[N], min_y[N], max_y[N];
pair<int, int> pos[N];
int check[N], sum;
void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
for (int i=0; i<H*W; ++i){
pos[i]={R[i], C[i]};
if (!i) min_x[i]=max_x[i]=pos[i].first, min_y[i]=max_y[i]=pos[i].second;
else{
min_x[i]=min(min_x[i-1], pos[i].first);
max_x[i]=max(max_x[i-1], pos[i].first);
min_y[i]=min(min_y[i-1], pos[i].second);
max_y[i]=max(max_y[i-1], pos[i].second);
}
check[i]=(max_x[i]-min_x[i]+1)*(max_y[i]-min_y[i]+1)==(i+1);
sum+=check[i];
}
}
int swap_seats(int a, int b) {
if (a>b) swap(a, b);
swap(pos[a], pos[b]);
for (int i=a; i<b; ++i){
sum-=check[i];
if (!i) min_x[i]=max_x[i]=pos[i].first, min_y[i]=max_y[i]=pos[i].second;
else{
min_x[i]=min(min_x[i-1], pos[i].first);
max_x[i]=max(max_x[i-1], pos[i].first);
min_y[i]=min(min_y[i-1], pos[i].second);
max_y[i]=max(max_y[i-1], pos[i].second);
}
check[i]=(max_x[i]-min_x[i]+1)*(max_y[i]-min_y[i]+1)==(i+1);
sum+=check[i];
}
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... |