답안 #679869

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
679869 2023-01-09T13:29:33 Z bashkort 미술 수업 (IOI13_artclass) C++17
43 / 100
2800 ms 6264 KB
#include "artclass.h"
#include <bits/stdc++.h>

using namespace std;

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

int dist(int i, int j, int x, int y) {
    return abs(R[i][j] - R[x][y]) + abs(B[i][j] - B[x][y]) + abs(G[i][j] - G[x][y]);
}

bool black(int i, int j) {
    return R[i][j] + B[i][j] + G[i][j] <= 20;
}

int same(int i, int j, int x, int y) {
    return dist(i, j, x, y) <= 150;
}

bool is_rectangle(int i, int j, int x, int y) {
    int cnt = 0;

    for (int a = i; a <= x; ++a) {
        for (int b = j; b <= y; ++b) {
            if (same(a, b, i, j)) {
                cnt += 1;
            }
        }
    }

    if (double(cnt) / ((x - i + 1) * (y - j + 1)) >= 0.999) {
        return true;
    } else {
        return false;
    }
}

int color_number() {
    vector<pair<int, int>> cols;

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            bool any = false;

            for (auto [x, y] : cols) {
                if (same(i, j, x, y)) {
                    any = true;
                    break;
                }
            }

            if (!any) {
                cols.emplace_back(i, j);
            }
        }
    }

    return cols.size();
}

int black_number() {
    int ans = 0;

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            if (black(i, j)) {
                ans += 1;
            }
        }
    }

    return ans;
}

int check1() {

}

int check2() {

}

int check3() {

}

int check4() {

}

bool any_rectangles() {
    const int rect_size = min({50, n / 2, m / 2});

    for (int i = rect_size - 1; i < n; ++i) {
        for (int j = rect_size - 1; j < m; ++j) {
            if (is_rectangle(i - rect_size + 1, j - rect_size + 1, i, j)) {
                return true;
            }
        }
    }

    return false;
}


bool any_big_rectangles() {
    const int rect_size = min({70, n / 2, m / 2});

    for (int i = rect_size - 1; i < n; ++i) {
        for (int j = rect_size - 1; j < m; ++j) {
            if (is_rectangle(i - rect_size + 1, j - rect_size + 1, i, j)) {
                return true;
            }
        }
    }

    return false;
}

int count_diff() {
    int ans = 0;

    for (int i = 1; i < n; ++i) {
        for (int j = 1; j < m; ++j) {
            ans += !same(i - 1, j, i, j);
            ans += !same(i, j - 1, i, j);
        }
    }

    return ans;
}

int style(int n, int m, int R[500][500], int G[500][500], int B[500][500]) {
    memcpy(::R, R, sizeof(::R)), memcpy(::G, G, sizeof(::G)), memcpy(::B, B, sizeof(::B));
    ::n = n, ::m = m;

    int color_cnt = color_number();
    int black_cnt = black_number();

    cerr << color_cnt << " " << black_cnt << endl;

    bool any_big = any_big_rectangles();
    bool any_rect = any_rectangles();
    int diff = count_diff();

    cerr << "any big: " << any_big << endl;
    cerr << "any rect: " << any_rect << endl;
    cerr << "diff: " << diff << endl;
    cerr << n * m << endl;

    if (color_cnt < 100 && color_cnt >= 3 && black_cnt > 50 && !any_rect && diff >= n * m / 3) {
        return 3;
    }
    if (color_cnt < 15 && black_cnt > 50 && any_rect) {
        return 1;
    }
    if (color_cnt < 10 && any_big) {
        return 4;
    }

    return 2;
}

Compilation message

artclass.cpp: In function 'int check1()':
artclass.cpp:77:1: warning: no return statement in function returning non-void [-Wreturn-type]
   77 | }
      | ^
artclass.cpp: In function 'int check2()':
artclass.cpp:81:1: warning: no return statement in function returning non-void [-Wreturn-type]
   81 | }
      | ^
artclass.cpp: In function 'int check3()':
artclass.cpp:85:1: warning: no return statement in function returning non-void [-Wreturn-type]
   85 | }
      | ^
artclass.cpp: In function 'int check4()':
artclass.cpp:89:1: warning: no return statement in function returning non-void [-Wreturn-type]
   89 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 518 ms 6152 KB Output is correct
2 Correct 34 ms 6056 KB Output is correct
3 Correct 1832 ms 6264 KB Output is correct
4 Incorrect 49 ms 5620 KB Output isn't correct
5 Correct 1055 ms 4408 KB Output is correct
6 Correct 50 ms 6148 KB Output is correct
7 Correct 466 ms 6156 KB Output is correct
8 Incorrect 2166 ms 5668 KB Output isn't correct
9 Incorrect 44 ms 5472 KB Output isn't correct
10 Correct 2652 ms 6152 KB Output is correct
11 Incorrect 38 ms 5452 KB Output isn't correct
12 Incorrect 252 ms 6148 KB Output isn't correct
13 Incorrect 642 ms 5516 KB Output isn't correct
14 Correct 92 ms 6052 KB Output is correct
15 Correct 125 ms 6052 KB Output is correct
16 Correct 51 ms 6028 KB Output is correct
17 Incorrect 48 ms 5580 KB Output isn't correct
18 Correct 40 ms 6100 KB Output is correct
19 Incorrect 42 ms 5492 KB Output isn't correct
20 Correct 39 ms 5592 KB Output is correct
21 Incorrect 44 ms 6148 KB Output isn't correct
22 Correct 2419 ms 5764 KB Output is correct
23 Correct 2482 ms 5512 KB Output is correct
24 Correct 46 ms 5752 KB Output is correct
25 Correct 1449 ms 4724 KB Output is correct
26 Correct 2442 ms 5476 KB Output is correct
27 Correct 34 ms 6092 KB Output is correct
28 Correct 2637 ms 6256 KB Output is correct
29 Correct 290 ms 3828 KB Output is correct
30 Correct 34 ms 6148 KB Output is correct
31 Correct 2541 ms 6200 KB Output is correct
32 Correct 2608 ms 6152 KB Output is correct
33 Incorrect 2459 ms 5368 KB Output isn't correct
34 Correct 2017 ms 6148 KB Output is correct
35 Incorrect 2800 ms 6152 KB Output isn't correct
36 Correct 42 ms 6136 KB Output is correct
37 Incorrect 34 ms 5016 KB Output isn't correct
38 Correct 41 ms 6104 KB Output is correct
39 Correct 34 ms 6152 KB Output is correct
40 Incorrect 2001 ms 5112 KB Output isn't correct
41 Correct 54 ms 6092 KB Output is correct
42 Incorrect 44 ms 5572 KB Output isn't correct
43 Correct 2497 ms 6152 KB Output is correct
44 Correct 563 ms 6148 KB Output is correct
45 Incorrect 51 ms 6092 KB Output isn't correct
46 Correct 2313 ms 6148 KB Output is correct
47 Correct 70 ms 6064 KB Output is correct
48 Incorrect 44 ms 6092 KB Output isn't correct
49 Incorrect 1570 ms 6148 KB Output isn't correct
50 Incorrect 1764 ms 5500 KB Output isn't correct
51 Incorrect 44 ms 6092 KB Output isn't correct
52 Incorrect 656 ms 5752 KB Output isn't correct
53 Correct 40 ms 6092 KB Output is correct
54 Incorrect 2155 ms 6152 KB Output isn't correct
55 Correct 45 ms 6092 KB Output is correct
56 Correct 141 ms 6152 KB Output is correct
57 Incorrect 2326 ms 5384 KB Output isn't correct
58 Correct 1152 ms 4484 KB Output is correct
59 Correct 32 ms 6100 KB Output is correct
60 Incorrect 156 ms 5800 KB Output isn't correct
61 Correct 13 ms 6120 KB Output is correct
62 Correct 41 ms 6096 KB Output is correct
63 Correct 1850 ms 5008 KB Output is correct
64 Correct 79 ms 6148 KB Output is correct
65 Incorrect 2219 ms 6156 KB Output isn't correct
66 Correct 25 ms 6100 KB Output is correct
67 Correct 79 ms 6080 KB Output is correct
68 Correct 49 ms 6068 KB Output is correct
69 Correct 2029 ms 5172 KB Output is correct
70 Correct 28 ms 6144 KB Output is correct
71 Correct 50 ms 6136 KB Output is correct
72 Correct 35 ms 6076 KB Output is correct
73 Incorrect 49 ms 6092 KB Output isn't correct
74 Correct 45 ms 5900 KB Output is correct
75 Correct 369 ms 6220 KB Output is correct
76 Correct 46 ms 6128 KB Output is correct
77 Incorrect 79 ms 5436 KB Output isn't correct
78 Correct 56 ms 6156 KB Output is correct
79 Correct 40 ms 6160 KB Output is correct
80 Correct 2376 ms 5428 KB Output is correct
81 Incorrect 41 ms 6092 KB Output isn't correct
82 Incorrect 2764 ms 5716 KB Output isn't correct
83 Correct 2630 ms 5576 KB Output is correct
84 Correct 44 ms 6092 KB Output is correct
85 Correct 53 ms 6048 KB Output is correct
86 Correct 45 ms 6052 KB Output is correct
87 Incorrect 2388 ms 5648 KB Output isn't correct
88 Correct 40 ms 4820 KB Output is correct
89 Correct 1691 ms 4748 KB Output is correct
90 Correct 2203 ms 6152 KB Output is correct
91 Correct 44 ms 6084 KB Output is correct
92 Incorrect 1424 ms 6148 KB Output isn't correct
93 Correct 921 ms 4736 KB Output is correct
94 Incorrect 52 ms 5324 KB Output isn't correct
95 Incorrect 1885 ms 5048 KB Output isn't correct
96 Incorrect 42 ms 5612 KB Output isn't correct
97 Incorrect 2587 ms 5592 KB Output isn't correct
98 Correct 1071 ms 4436 KB Output is correct
99 Correct 1456 ms 4720 KB Output is correct
100 Incorrect 2672 ms 5660 KB Output isn't correct
101 Incorrect 1909 ms 5432 KB Output isn't correct
102 Correct 188 ms 6188 KB Output is correct