제출 #425347

#제출 시각아이디문제언어결과실행 시간메모리
425347Monchito자리 배치 (IOI18_seats)C++14
5 / 100
4094 ms35880 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...