제출 #1217382

#제출 시각아이디문제언어결과실행 시간메모리
1217382omsincoconutArt Class (IOI13_artclass)C++20
100 / 100
40 ms3304 KiB
#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 timeMemoryGrader output
Fetching results...