이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "seats.h"
#include<bits/stdc++.h>
using namespace std;
int ans;
vector<int>R_,C_,R2,C2,R3,C3;
int span(int pos){
return (R3[pos]-R2[pos]+1)*(C3[pos]-C2[pos]+1);
}
void red(int i){
R2[i]=min(R2[i-1],R_[i]);
R3[i]=max(R3[i-1],R_[i]);
C2[i]=min(R2[i-1],C_[i]);
C3[i]=max(C3[i-1],C_[i]);
}
void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) {
R_=R,C_=C;
R_.insert(R_.begin(),0);
C_.insert(C_.begin(),0);
R2=R3=C2=C3=R_;
R2[0]=C2[0]=1e9;
for(int i=0;i<H*W;)
red(++i),ans+=i==span(i);
}
int swap_seats(int a, int b) {
a++,b++;
if(a>b)swap(a,b);
swap(R_[a],R_[b]);
swap(C_[a],C_[b]);
for(int i=a;i<b;i++)
ans-=i==span(i),red(i),ans+=i==span(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... |