제출 #1035756

#제출 시각아이디문제언어결과실행 시간메모리
1035756why_5_mins미술 수업 (IOI13_artclass)C++14
3 / 100
61 ms39940 KiB
#include "artclass.h" #include <bits/stdc++.h> using namespace std; int HH,WW; int const_dif_lejer = 50; int const_dif_hard = 20; int RR[505][505],GG[505][505],BB[505][505]; bool similar(int r1, int g1, int b1, int r2, int g2, int b2, int const_dif) { if (abs(r1 - r2) > const_dif or abs(g1 - g2) > const_dif or abs(b1 - b2) > const_dif) return false; return true; } bool sim(int l1, int c1, int l2, int c2) { return similar(RR[l1][c1], GG[l1][c1], BB[l1][c1], RR[l2][c2], GG[l2][c2], BB[l2][c2], const_dif_lejer); } int dl[] = {-1,0,1,0}; int dc[] = {0,1,0,-1}; bool viz[505][505]; void dfs(int lin, int col) { viz[lin][col] = true; for (int i = 0; i < 4; i++) { int nl = lin + dl[i],nc = col + dc[i]; if (nl >= 0 and nl < HH and nc >= 0 and nc < WW and sim(lin,col,nl,nc) and !viz[nl][nc]) dfs(nl,nc); } } bool stil_4() { for (int i = 0; i < HH; i++) for (int j = 0; j < WW; j++) viz[i][j] = false; int cc = 0; for (int i = 0; i < HH; i++) for (int j = 0; j < WW; j++) if (!viz[i][j]) cc++,dfs(i,j); if (cc <= 10) return true; return false; } bool stil_1() { int cntW = 0; for (int i = 0; i < HH; i++) for (int j = 0; j < WW; j++) if (similar(RR[i][j],GG[i][j],BB[i][j],255,255,255,const_dif_lejer)) cntW++; if (cntW >= HH * WW / 5) return true; return false; } int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) { HH = H; WW = W; for (int i = 0; i < H; i++) for (int j = 0; j < W; j++) RR[i][j] = R[i][j],GG[i][j] = G[i][j],BB[i][j] = B[i][j]; if (stil_1()) return 1; if (stil_4()) return 4; assert(false); } /// stil 1 -> exista o culoare, a.i daca ii iau componentele conexe din ea, le marchez ca blocate, componentele ramase o sa fie "uniforme" /// stil 2 -> pana mea, mult verde s-ar putea crede /// stil 3 -> kys /// stil 4 -> putine componente conexe
#Verdict Execution timeMemoryGrader output
Fetching results...