제출 #469591

#제출 시각아이디문제언어결과실행 시간메모리
469591alextodoran미술 수업 (IOI13_artclass)C++17
84 / 100
73 ms3648 KiB
/** ____ ____ ____ ____ ____ ||a |||t |||o |||d |||o || ||__|||__|||__|||__|||__|| |/__\|/__\|/__\|/__\|/__\| **/ #include <bits/stdc++.h> #include "artclass.h" using namespace std; typedef long long ll; const int HW_MAX = 500; ll sq (ll a) { if(a < 0) return -sqrt(-a); return sqrt(a); } int getMess (int H, int W, int R[HW_MAX][HW_MAX], int G[HW_MAX][HW_MAX], int B[HW_MAX][HW_MAX]) { ll res = 0; for(int i = 0; i < H; i++) for(int j = 0; j < W; j++) { if(i > 0) { ll val = 0; val += abs(R[i][j] - R[i - 1][j]); val += abs(G[i][j] - G[i - 1][j]); val += abs(B[i][j] - B[i - 1][j]); res += val * val; } if(j > 0) { ll val = 0; val += abs(R[i][j] - R[i][j - 1]); val += abs(G[i][j] - G[i][j - 1]); val += abs(B[i][j] - B[i][j - 1]); res += val * val; } } res = sq(res) * 1000; res /= (H * W); return res; } int getGreen (int H, int W, int R[HW_MAX][HW_MAX], int G[HW_MAX][HW_MAX], int B[HW_MAX][HW_MAX]) { ll res = 0; for(int i = 0; i < H; i++) for(int j = 0; j < W; j++) { if(G[i][j] > R[i][j] && G[i][j] > B[i][j] + 30) res += 10000; } res /= (H * W); return res; } int getWhite (int H, int W, int R[HW_MAX][HW_MAX], int G[HW_MAX][HW_MAX], int B[HW_MAX][HW_MAX]) { ll res = 0; for(int i = 0; i < H; i++) for(int j = 0; j < W; j++) { int mx = max({R[i][j], G[i][j], B[i][j]}); int mn = min({R[i][j], G[i][j], B[i][j]}); if(mx - mn < 30 && (mx > 220 || mn < 10)) res += 10000; } res /= (H * W); return res; } int style (int H, int W, int R[HW_MAX][HW_MAX], int G[HW_MAX][HW_MAX], int B[HW_MAX][HW_MAX]) { int mess = getMess(H, W, R, G, B); int green = getGreen(H, W, R, G, B); int white = getWhite(H, W, R, G, B); if(green > 1500) return 2; if(mess > 220) return 3; if(white > 2000) return 1; if(mess < 100) return 4; return 2; }
#Verdict Execution timeMemoryGrader output
Fetching results...