Submission #575793

#TimeUsernameProblemLanguageResultExecution timeMemory
575793jack715미술 수업 (IOI13_artclass)C++14
9 / 100
75 ms3508 KiB
#include "artclass.h"
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pp pop_back
#define mp make_pair
#define bb back
#define ff first
#define ss second

using namespace std;

bool inbound(pair<int, int> now, int H, int W) {
    if (now.ff < 0 || now.ff >= H) return 0;
    if (now.ss < 0 || now.ss >= W) return 0;
    return 1;
}

int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
    pair<int, int> dir[4] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
    long long avr = 0, avg = 0, avb = 0, avdisp = 0, now, cnt, total = 0;
    for (int i = 0; i < H; i++)
    for (int j = 0; j < W; j++) {
        avr += R[i][j];
        avg += G[i][j];
        avb += B[i][j];
        now = 0, cnt = 0;
        for (int k = 0; k < 4; k++) {
            if (!inbound({i+dir[k].ff, j+dir[k].ss}, H, W))
                continue;
            cnt++;
            now += abs(R[i][j]-R[i+dir[k].ff][j+dir[k].ss]);
            now += abs(G[i][j]-G[i+dir[k].ff][j+dir[k].ss]);
            now += abs(B[i][j]-B[i+dir[k].ff][j+dir[k].ss]);
        }
        if (cnt)
            now /= cnt*3, total++;
        avdisp += now;
    }
    avdisp /= total;
    avr /= (H*W);
    avg /= (H*W);
    avb /= (H*W);
    // cout << avr << ' ' << avg << ' ' << avb << '\n';
    if (avg >= avb+20 && avg >= avr+20) 
        return 2;
    if (avdisp > 30)
        return 3;
    if ((abs(avg-avr)+abs(avg-avb)+abs(avb-avr))/3 > 30)
        return 4;
    return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...