#include "artclass.h"
#include <bits/stdc++.h>
using namespace std;
double takepw(double x) {return pow(x, 2);}
double difference_mean(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
double sum = 0;
for (int i = 1; i < H; i++) {
for (int j = 1; j < W; j++) {
sum += takepw(0.299*abs(R[i][j]-R[i-1][j]) + 0.587*abs(G[i][j]-G[i-1][j]) + 0.114*abs(B[i][j]-B[i-1][j]));
sum += takepw(0.299*abs(R[i][j]-R[i][j-1]) + 0.587*abs(G[i][j]-G[i][j-1]) + 0.114*abs(B[i][j]-B[i][j-1]));
}
}
return sum/(H*W);
}
double info[5][2] = {
{0,0},
{546.836, 278.832},
{511.457, 351.962},
{3388.283, 2*1561.624/3},
{27.279, 20.547}
};
double takepw_2(double x) {return pow(x, 1);}
double difference_mean_2(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
double sum = 0;
for (int i = 1; i < H; i++) {
for (int j = 1; j < W; j++) {
sum += takepw_2(0.299*abs(R[i][j]-R[i-1][j]) + 0.587*abs(G[i][j]-G[i-1][j]) + 0.114*abs(B[i][j]-B[i-1][j]));
sum += takepw_2(0.299*abs(R[i][j]-R[i][j-1]) + 0.587*abs(G[i][j]-G[i][j-1]) + 0.114*abs(B[i][j]-B[i][j-1]));
}
}
return sum/(H*W);
}
double info_2[5][2] = {
{0,0},
{11.551, 4.619},
{21.419, 7.205},
{57.704, 15.829},
{3.685, 1.013}
};
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
double df = difference_mean(H, W, R, G, B);
double cv = 1e9;
int ret = 0;
for (int i = 1; i <= 4; i++) {
double v = (double)abs(df-info[i][0])/info[i][1];
if (v < cv) {
cv = v;
ret = i;
}
}
if (ret == 3 || ret== 4) return ret;
df = difference_mean_2(H, W, R, G, B);
cv = 1e9;
ret = 0;
for (int i = 1; i <= 2; i++) {
double v = (double)abs(df-info_2[i][0])/info_2[i][1];
if (v < cv) {
cv = v;
ret = i;
}
}
return ret;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |