제출 #296702

#제출 시각아이디문제언어결과실행 시간메모리
296702Bruteforceman자리 배치 (IOI18_seats)C++11
5 / 100
4077 ms43768 KiB
#include "bits/stdc++.h" #include "seats.h" using namespace std; vector <vector <int>> a; vector <int> row, col; int h, w; bool inside(int x, int y) { return (0 <= x && x < h) && (0 <= y && y < w); } bool isOkay(int R) { int total = 0; for(int i = 0; i <= R; i++) { for(int dx : {-1, 1}) { for(int dy : {-1, 1}) { int x = row[i]; int y = col[i]; int cnt = 0; if(!inside(x + dx, y) || a[x + dx][y] > R) ++cnt; if(!inside(x, y + dy) || a[x][y + dy] > R) ++cnt; if(cnt == 2) ++total; } } } for(int i = R + 1; i < h * w; i++) { for(int dx : {-1, 1}) { for(int dy : {-1, 1}) { int x = row[i]; int y = col[i]; int cnt = 0; if(inside(x + dx, y) && a[x + dx][y] <= R) ++cnt; if(inside(x, y + dy) && a[x][y + dy] <= R) ++cnt; if(cnt == 2) ++total; } } } return (total == 4); } void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { h = H; w = W; a = vector <vector <int>> (H, vector <int> (W, 0)); row = R; col = C; for(int i = 0; i < H * W; i++) { a[row[i]][col[i]] = i; } } int swap_seats(int p, int q) { swap(a[row[p]][col[p]], a[row[q]][col[q]]); swap(row[p], row[q]); swap(col[p], col[q]); int ans = 0; for(int i = 0; i < h * w; i++) { ans += isOkay(i); } return ans; }
#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...