제출 #1313906

#제출 시각아이디문제언어결과실행 시간메모리
1313906kawhiet미술 수업 (IOI13_artclass)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#include "artclass.h"
using namespace std;

int n, m;
vector<vector<int>> r, g, b;

double get(double tot, double cnt) {
    return 100.0 / tot * cnt;
}

bool field() {
    int bad = 0;
    for (int i = 0; i < n; i++) {
        int cnt = 1, mx = 1;
        vector<int> v;
        for (int j = 1; j < m; j++) {
            int d1 = abs(r[i][j] - r[i][j - 1]);
            int d2 = abs(g[i][j] - g[i][j - 1]);
            int d3 = abs(b[i][j] - b[i][j - 1]);
            if (max({d1, d2, d3}) > 22) {
                cnt = 1;
                v.push_back(cnt);
            } else {
                cnt++;
            }
            mx = max(mx, cnt);
        }
        v.push_back(cnt);
        bool ok = 1;
        int sz = v.size();
        for (int i = 0; i < sz / 7; i++) {
            if (v[i] == mx) ok = 0;
            if (v[sz - i - 1] == mx) ok = 0;
        }
        if (get(m, mx) < 40 || !ok) {
            i += 4;
            bad++;
        }
    }
    cerr << bad << ' ';
    return bad <= n / 47;
}

bool action() {
    return false;
}

int landscape() {
    int cnt = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            int x = r[i][j], y = g[i][j], z = b[i][j];
            if (z == min({x, y, z}) && double(y) / double(z) >= 1.5) {
                cnt++;
            }
        }
    }
    double p = 100.0 / double(n * m) * double(cnt);
    return p >= 40;
}

bool modern() {
    int cnt = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            int x = r[i][j], y = b[i][j], z = g[i][j];
            int mn = min({x, y, z});
            int mx = max({x, y, z});
            if (min({x, y, z}) >= 180 && mx - mn <= 30) {
                cnt++;
            }
        }
    }
    double p = get(n * m, cnt);
    return p >= 18;
}

int style(int _n, int _m, int _r[500][500], int _g[500][500], int _b[500][500]) {
    n = _n; m = _m;
    r.assign(n, vector<int>(m, 0));
    b.assign(n, vector<int>(m, 0));
    g.assign(n, vector<int>(m, 0));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            r[i][j] = _r[i][j];
            g[i][j] = _g[i][j];
            b[i][j] = _b[i][j];
        }
    }
    if (field()) return 4;
    if (modern()) return 1;
    if (landscape()) return 2;
    return 3;
}

int R[500][500], G[500][500], B[500][500];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int tt = 36;
    // cin >> tt;
    while (tt--) {
        for (int i = 0; i < 500; i++) {
            for (int j = 0; j < 500; j++) {
                R[i][j] = B[i][j] = G[i][j] = 0;
            }
        }
        int N, M;
        cin >> N >> M;
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                cin >> R[i][j] >> G[i][j] >> B[i][j];
            }
        }
        cout << style(N, M, R, G, B) << ' ';
        if (tt % 9 == 0) {
            cout << '\n';
            cerr << '\n';
        }
    }
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/ccntlLgq.o: in function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'; /tmp/cc4aCWGn.o:artclass.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status