Submission #1074777

#TimeUsernameProblemLanguageResultExecution timeMemory
1074777mc061Art Class (IOI13_artclass)C++17
82 / 100
62 ms6224 KiB
#pragma once #include <bits/stdc++.h> #include "artclass.h" using namespace std; int diff(array<int, 3> pixel_1, array<int, 3> pixel_2) { int ret = 0; for (int i = 0; i < 3; ++i) { ret += abs(pixel_1[i] - pixel_2[i]); } return ret; } const int bound = 40; // int get_diff(int il, int ir, int jl, int jr, int R[500][500], int G[500][500], int B[500][500]) { // for (int i = il; i < ir; ++i) { // for (int j = jl; j < jr; ++j) { // if (i >= il && i < ir && j >= jl && j < jr) { // ret += diff({R[i][j], G[i][j], B[i][j]}, {R[i][j], G[i][j], B[i][j]}); // } // } // } // } int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) { cout << fixed << setprecision(10); auto get_sim = [&] (int bound) -> double { int ret = 0, norm=0; for (int t = W/4; t < W; t += W/8) { for (int i = 1; i < H; i += 2) { int df = diff({R[i][t], G[i][t], B[i][t]}, {R[i-1][t], G[i-1][t], B[i-1][t]}); ret += df <= bound; norm++; } } return (ret == 0 ? 0 : double(ret)/norm); }; // cout << get_sim(5) << " " << get_sim(10) << " " << get_sim(15) << " "; int similarities = 0; int diffs = 0; int green = 0; int tot = 0; for (int t = W/4; t < W; t += W/8) { for (int i = 1; i < H; i++) { int df = diff({R[i][t], G[i][t], B[i][t]}, {R[i-1][t], G[i-1][t], B[i-1][t]}); diffs += df > bound; similarities += df <= bound; green += G[i][t] >= R[i][t] && G[i][t] >= B[i][t]; int y = (G[i][t] + B[i][t]) / 2; if (y >= 200) ++green; tot++; } } // cerr << "GREEN : " << (double)green/tot << "\n"; // for (int t = 0; t < W; t++) { // for (int i = 1; i < H; ++i) { // green += G[i][t] >= 200 && (R[i][t] + B[i][t] <= 100); // } // } // cerr << green << "\n"; // cerr << diffs << " " << similarities << "\n"; double p = (double)diffs / similarities; // cerr << "prob: " << p << ", res = "; if (get_sim(15) > 0.91 && p < 0.025) return 4; if (get_sim(5) + get_sim(10) + get_sim(15) < 0.5 || p >= 0.9) return 3; if (get_sim(5) > 0.25) return 1; // if (p > 0.9) { // return 3; // } return 2; // cout << diffs << " " << similarities << "\n"; // return 0; }

Compilation message (stderr)

artclass.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...