#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 <= 111) 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]));
}
}
return 1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |