# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
776964 | caganyanmaz | Art Class (IOI13_artclass) | C++17 | 62 ms | 6836 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "artclass.h"
#include <bits/stdc++.h>
using namespace std;
constexpr static int MXSIZE = 500;
constexpr static int CHANNEL = 3;
array<int, 3> image[MXSIZE][MXSIZE];
constexpr static int MINDIFF = 10;
const static double FAC = 0.00392156862;
const static double WHITE_T = 0.65;
const static double BRIGHT_T = 0.7;
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500])
{
for (int i = 0; i < H; i++)
for (int j = 0; j < W; j++)
image[i][j] = {R[i][j], G[i][j], B[i][j]};
int64_t vc = 0;
int64_t hc = 0;
array<int64_t,3> tc ({0, 0, 0});
double sum_y = 0;
int bright = 0;
int white = 0;
for (int i = 0; i < H-1; i++)
{
for (int j = 0; j < W-1; j++)
{
for (int c = 0; c < CHANNEL; c++)
{
vc += abs(image[i][j][c] - image[i+1][j][c]);
hc += abs(image[i][j][c] - image[i][j+1][c]);
}
double r = image[i][j][0] * FAC, g = image[i][j][1] * FAC, b = image[i][j][2] * FAC;
double l = 0.2126 * r + 0.7152 * g + 0.0722 * b;
if (l > BRIGHT_T)
bright++;
if ((r > WHITE_T) && (g > WHITE_T) && (b > WHITE_T))
white++;
}
}
int64_t total_size = H*W;
int64_t change = vc + hc;
int difference = change / total_size;
if (difference <= 15)
return 4;
if (difference > 90)
return 3;
double bright_r = (double)bright / total_size;
double white_r = (double)white / total_size;
double d = (double)difference * FAC;
if (white_r > 0.3)
return 1;
return 2;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |