제출 #1260476

#제출 시각아이디문제언어결과실행 시간메모리
1260476repmann미술 수업 (IOI13_artclass)C++20
19 / 100
39 ms17992 KiB
#include <bits/stdc++.h> #include "artclass.h" using namespace std; const int T = 10000; int N, M, comp; int V[502][502]; int R[502][502], G[502][502], B[502][502]; int di[8] = {-1, +0, +1, +0, -1, -1, +1, +1}; int dj[8] = {+0, -1, +0, +1, -1, +1, +1, -1}; inline int sqr(int x) {return x * x;} inline int dist(int r1, int g1, int b1, int r2, int g2, int b2) {return sqr(r1 - r2) + sqr(g1 - g2) + sqr(b1 - b2);} inline void DFS(int i, int j) { V[i][j] = comp; for(int k = 0; k < 4; k++) { if(V[i + di[k]][j + dj[k]]) continue; if(dist(R[i][j], G[i][j], B[i][j], R[i + di[k]][j + dj[k]], G[i + di[k]][j + dj[k]], B[i + di[k]][j + dj[k]]) > T) continue; DFS(i + di[k], j + dj[k]); } return; } int style(int n, int m, int r[500][500], int g[500][500], int b[500][500]) { N = n; M = m; for(int i = 1; i <= N; i++) { for(int j = 1; j <= M; j++) { R[i][j] = r[i - 1][j - 1]; G[i][j] = g[i - 1][j - 1]; B[i][j] = b[i - 1][j - 1]; } } for(int i = N + 1; i >= 0; i--) V[i][0] = V[i][M + 1] = -1; for(int j = M + 1; j >= 0; j--) V[0][j] = V[N + 1][j] = -1; for(int i = 1; i <= N; i++) { for(int j = 1; j <= M; j++) { if(V[i][j]) continue; comp++; DFS(i, j); } } if(comp <= 10) return 4; if(comp <= 30) return 1; if(comp <= 100) return 2; return 3; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...