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