Submission #1187860

#TimeUsernameProblemLanguageResultExecution timeMemory
1187860petezaArt Class (IOI13_artclass)C++20
43 / 100
31 ms3180 KiB
#include "artclass.h" #include <iostream> using namespace std; bool isred(int r, int g, int b) { return (r - g >= 50 && r - b >= 50); } bool isgreen(int r, int g, int b) { return (g - r >= 13 && g - b >= 13); } bool isblue(int r, int g, int b) { return (b - r >= 50 && b - g >= 50); } bool iswhite(int r, int g, int b) { return (r >= 150) && (g >= 150) && (b >= 150); } bool isblack(int r, int g, int b) { return (r < 60) && (g < 60) && (b < 60); } bool isyellow(int r, int g, int b) { return (r - b >= 30) && (g - b >= 30); } bool check1(int r, int g, int b) { return iswhite(r, g, b) || isred(r, g, b) || isblue(r, g, b) || isblack(r, g, b) || isyellow(r, g, b); } int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) { //detect horizontal, if difference is low, then its a 4 int sumr, sumg, sumb; int cmx = 0; for(int i=0;i<H;i++) { sumr = sumg = sumb = 0; for(int j=0;j<W;j++) { sumr += R[i][j]; sumg += G[i][j]; sumb += B[i][j]; } sumr /= W; sumg /= W; sumb /= W; int cdiff = 0; for(int j=0;j<W;j++) { cdiff += labs(sumr - R[i][j]) + labs(sumg-G[i][j]) + labs(sumb-B[i][j]); } cmx = max(cmx, cdiff/W); } if(cmx <= 90) return 4; //if 90% of the picture is either white, red, blue, yellow, or black, then its a 1 int cnt = 0; for(int i=0;i<H;i++) { for(int j=0;j<W;j++) { cnt += check1(R[i][j], G[i][j], B[i][j]); } } //cout << cnt << " OUT OF " << H*W << '\n'; //cout << 100.0*cnt/H/W << "%\n"; if(cnt >= H*W*0.85) return 1; //if its mostly green, its 2???? sumr = sumg = sumb = 0; int greensq = 0; for(int i=0;i<H;i++) { for(int j=0;j<W;j++) { sumr += R[i][j]; sumg += G[i][j]; sumb += B[i][j]; greensq += (isyellow(R[i][j], G[i][j], B[i][j]) || isgreen(R[i][j], G[i][j], B[i][j])); } } //cout << greensq*100.0/H/W << '\n'; if(greensq >= 0.30*H*W) return 2; //cout << greensq*100.00/H/W << "%\n"; //cout << sumr << ' ' << sumg << ' ' << sumb << '\n'; //if(sumg > sumr && sumg > sumb) return 2; //else its 3 //cout << sumr << ' ' << sumg << ' ' << sumb << '\n'; return 3; }
#Verdict Execution timeMemoryGrader output
Fetching results...