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 "seats.h"
#include <iostream>
using namespace std;
const int MAXN = 1e3;
int grid[MAXN][MAXN], N, M;
void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
int cnt=0;
N = H; M = W;
for(int i=0; i<H*W; i++) {
grid[R[i]][C[i]] = cnt;
cnt++;
}
}
void find_position(pair<int,int>& p1, pair<int,int>& p2, int a, int b) {
bool flag=false;
for(int i=0; i<N; i++) {
for(int j=0; j<M; j++) {
if(grid[i][j] == a) {
if(!flag) { p1 = { i, j}; flag = true; }
else p2 = { i, j };
}
else if(grid[i][j] == b) {
if(!flag) { p1 = { i, j}; flag = true; }
else p2 = { i, j };
}
}
}
}
bool can(int r1, int r2, int c1, int c2, int k) {
for(int i=r1; i<=r2; i++) {
for(int j=c1; j<=c2; j++) {
if(grid[i][j] >= k) return false;
}
}
/*
for(int i=r1; i<=r2; i++) {
for(int j=c1; j<=c2; j++)
cout << grid[i][j] << " ";
cout << "\n";
}
*/
return true;
}
void print(){
for(int i=0; i<N; i++) {
for(int j=0; j<M; j++)
cout << grid[i][j] << " ";
cout << "\n";
}
}
int swap_seats(int a, int b) {
pair<int,int> p1, p2;
find_position(p1, p2, a, b);
swap(grid[p1.first][p1.second], grid[p2.first][p2.second]);
int ret=0;
for(int r1=0; r1<N; r1++) {
for(int r2=r1; r2 < N; r2++) {
for(int c1=0; c1 < M; c1++) {
for(int c2=c1; c2 < M; c2++) {
int k = (r2-r1+1) * (c2-c1+1);
if(can(r1, r2, c1, c2, k)){
ret++;
}
}
}
}
}
return ret;
}
# | 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... |