Submission #679866

# Submission time Handle Problem Language Result Execution time Memory
679866 2023-01-09T13:18:03 Z bashkort Art Class (IOI13_artclass) C++17
54 / 100
2720 ms 6292 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 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();

    cerr << "any big: " << any_big << endl;
    cerr << "any rect: " << any_rect << endl;

    if (color_cnt < 100 && color_cnt >= 3 && black_cnt > 50 && !any_rect) {
        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 | }
      | ^
# Verdict Execution time Memory Grader output
1 Correct 43 ms 6096 KB Output is correct
2 Correct 1165 ms 4504 KB Output is correct
3 Incorrect 2218 ms 6216 KB Output isn't correct
4 Correct 1811 ms 5004 KB Output is correct
5 Correct 1439 ms 4692 KB Output is correct
6 Incorrect 41 ms 5460 KB Output isn't correct
7 Incorrect 47 ms 5580 KB Output isn't correct
8 Correct 2639 ms 5660 KB Output is correct
9 Correct 2668 ms 6148 KB Output is correct
10 Correct 2560 ms 5572 KB Output is correct
11 Correct 2433 ms 5744 KB Output is correct
12 Incorrect 43 ms 5580 KB Output isn't correct
13 Incorrect 40 ms 5476 KB Output isn't correct
14 Incorrect 48 ms 6044 KB Output isn't correct
15 Correct 40 ms 6152 KB Output is correct
16 Correct 1503 ms 4752 KB Output is correct
17 Incorrect 2407 ms 5580 KB Output isn't correct
18 Correct 53 ms 6024 KB Output is correct
19 Incorrect 147 ms 5804 KB Output isn't correct
20 Incorrect 39 ms 6108 KB Output isn't correct
21 Correct 41 ms 6092 KB Output is correct
22 Correct 137 ms 6132 KB Output is correct
23 Correct 1452 ms 4620 KB Output is correct
24 Incorrect 41 ms 6060 KB Output isn't correct
25 Incorrect 48 ms 6132 KB Output isn't correct
26 Correct 2375 ms 5424 KB Output is correct
27 Correct 2295 ms 5380 KB Output is correct
28 Correct 2487 ms 6152 KB Output is correct
29 Correct 33 ms 6092 KB Output is correct
30 Correct 1814 ms 6152 KB Output is correct
31 Correct 513 ms 6156 KB Output is correct
32 Correct 42 ms 6056 KB Output is correct
33 Correct 43 ms 5812 KB Output is correct
34 Correct 284 ms 3824 KB Output is correct
35 Incorrect 33 ms 5068 KB Output isn't correct
36 Incorrect 1757 ms 5508 KB Output isn't correct
37 Correct 24 ms 6136 KB Output is correct
38 Correct 43 ms 6084 KB Output is correct
39 Incorrect 640 ms 5516 KB Output isn't correct
40 Correct 539 ms 6148 KB Output is correct
41 Correct 40 ms 4844 KB Output is correct
42 Correct 13 ms 6076 KB Output is correct
43 Correct 31 ms 6040 KB Output is correct
44 Correct 2466 ms 6180 KB Output is correct
45 Incorrect 45 ms 6092 KB Output isn't correct
46 Incorrect 243 ms 6096 KB Output isn't correct
47 Correct 2281 ms 6272 KB Output is correct
48 Correct 462 ms 6220 KB Output is correct
49 Correct 34 ms 6100 KB Output is correct
50 Incorrect 2175 ms 5660 KB Output isn't correct
51 Correct 1055 ms 4412 KB Output is correct
52 Correct 1061 ms 4436 KB Output is correct
53 Correct 54 ms 6292 KB Output is correct
54 Correct 37 ms 6092 KB Output is correct
55 Correct 40 ms 6064 KB Output is correct
56 Correct 38 ms 6136 KB Output is correct
57 Correct 88 ms 6120 KB Output is correct
58 Correct 37 ms 6088 KB Output is correct
59 Correct 46 ms 6132 KB Output is correct
60 Incorrect 1867 ms 5044 KB Output isn't correct
61 Incorrect 1430 ms 6148 KB Output isn't correct
62 Correct 1932 ms 5196 KB Output is correct
63 Incorrect 2162 ms 6220 KB Output isn't correct
64 Correct 44 ms 5880 KB Output is correct
65 Incorrect 54 ms 5424 KB Output isn't correct
66 Correct 44 ms 6052 KB Output is correct
67 Correct 925 ms 4808 KB Output is correct
68 Correct 1790 ms 6156 KB Output is correct
69 Correct 2076 ms 6152 KB Output is correct
70 Incorrect 37 ms 5452 KB Output isn't correct
71 Correct 48 ms 6096 KB Output is correct
72 Correct 28 ms 6108 KB Output is correct
73 Correct 49 ms 6128 KB Output is correct
74 Correct 38 ms 5552 KB Output is correct
75 Correct 48 ms 6088 KB Output is correct
76 Correct 2489 ms 6152 KB Output is correct
77 Incorrect 40 ms 5544 KB Output isn't correct
78 Correct 368 ms 6156 KB Output is correct
79 Correct 2468 ms 5504 KB Output is correct
80 Correct 121 ms 6124 KB Output is correct
81 Correct 76 ms 6152 KB Output is correct
82 Incorrect 626 ms 5656 KB Output isn't correct
83 Correct 39 ms 6092 KB Output is correct
84 Correct 2636 ms 6152 KB Output is correct
85 Correct 2278 ms 5372 KB Output is correct
86 Correct 2579 ms 5588 KB Output is correct
87 Correct 49 ms 6076 KB Output is correct
88 Incorrect 42 ms 6072 KB Output isn't correct
89 Incorrect 47 ms 5588 KB Output isn't correct
90 Correct 52 ms 6088 KB Output is correct
91 Incorrect 77 ms 5548 KB Output isn't correct
92 Correct 47 ms 6020 KB Output is correct
93 Incorrect 1552 ms 6156 KB Output isn't correct
94 Incorrect 2299 ms 5680 KB Output isn't correct
95 Incorrect 2655 ms 6152 KB Output isn't correct
96 Incorrect 1962 ms 5428 KB Output isn't correct
97 Correct 2720 ms 5716 KB Output is correct
98 Correct 47 ms 6092 KB Output is correct
99 Correct 76 ms 6152 KB Output is correct
100 Correct 182 ms 6152 KB Output is correct
101 Correct 2020 ms 5196 KB Output is correct
102 Correct 41 ms 6128 KB Output is correct