Submission #679860

# Submission time Handle Problem Language Result Execution time Memory
679860 2023-01-09T13:03:37 Z bashkort Art Class (IOI13_artclass) C++17
8 / 100
463 ms 6372 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.95) {
        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({20, 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({20, 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;

    cerr << "any big: " << any_big_rectangles() << endl;

    if (color_cnt < 100 && color_cnt >= 5 && black_cnt > 50 && !any_big_rectangles()) {
        return 3;
    }
    if (color_cnt < 10 && black_cnt > 50) {
        return 1;
    }
    if (color_cnt < 10) {
        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 Incorrect 441 ms 6092 KB Output isn't correct
2 Incorrect 182 ms 6092 KB Output isn't correct
3 Incorrect 365 ms 6148 KB Output isn't correct
4 Incorrect 285 ms 6152 KB Output isn't correct
5 Incorrect 226 ms 6088 KB Output isn't correct
6 Correct 54 ms 6100 KB Output is correct
7 Incorrect 243 ms 4844 KB Output isn't correct
8 Correct 231 ms 6100 KB Output is correct
9 Incorrect 365 ms 6148 KB Output isn't correct
10 Incorrect 394 ms 6156 KB Output isn't correct
11 Incorrect 450 ms 6148 KB Output isn't correct
12 Correct 198 ms 6152 KB Output is correct
13 Correct 121 ms 6156 KB Output is correct
14 Correct 232 ms 4724 KB Output is correct
15 Correct 224 ms 4724 KB Output is correct
16 Incorrect 460 ms 6092 KB Output isn't correct
17 Incorrect 289 ms 5068 KB Output isn't correct
18 Incorrect 341 ms 5452 KB Output isn't correct
19 Correct 329 ms 5324 KB Output is correct
20 Incorrect 381 ms 6156 KB Output isn't correct
21 Incorrect 193 ms 6100 KB Output isn't correct
22 Incorrect 157 ms 5048 KB Output isn't correct
23 Incorrect 454 ms 6140 KB Output isn't correct
24 Incorrect 238 ms 6144 KB Output isn't correct
25 Correct 175 ms 4308 KB Output is correct
26 Incorrect 285 ms 6092 KB Output isn't correct
27 Incorrect 198 ms 5580 KB Output isn't correct
28 Correct 236 ms 5996 KB Output is correct
29 Incorrect 444 ms 6124 KB Output isn't correct
30 Correct 171 ms 6100 KB Output is correct
31 Correct 235 ms 6260 KB Output is correct
32 Incorrect 442 ms 6100 KB Output isn't correct
33 Incorrect 217 ms 6088 KB Output isn't correct
34 Correct 206 ms 6148 KB Output is correct
35 Correct 220 ms 5816 KB Output is correct
36 Incorrect 451 ms 6156 KB Output isn't correct
37 Correct 189 ms 4436 KB Output is correct
38 Incorrect 363 ms 6148 KB Output isn't correct
39 Incorrect 386 ms 5696 KB Output isn't correct
40 Correct 150 ms 6100 KB Output is correct
41 Incorrect 225 ms 5672 KB Output isn't correct
42 Incorrect 171 ms 6028 KB Output isn't correct
43 Incorrect 371 ms 6168 KB Output isn't correct
44 Correct 371 ms 5708 KB Output is correct
45 Correct 357 ms 5508 KB Output is correct
46 Incorrect 463 ms 6272 KB Output isn't correct
47 Incorrect 182 ms 5384 KB Output isn't correct
48 Correct 163 ms 6100 KB Output is correct
49 Incorrect 358 ms 5552 KB Output isn't correct
50 Incorrect 209 ms 5652 KB Output isn't correct
51 Correct 275 ms 6092 KB Output is correct
52 Correct 355 ms 6148 KB Output is correct
53 Correct 226 ms 6044 KB Output is correct
54 Incorrect 174 ms 6236 KB Output isn't correct
55 Incorrect 344 ms 5412 KB Output isn't correct
56 Correct 292 ms 5164 KB Output is correct
57 Incorrect 423 ms 6092 KB Output isn't correct
58 Correct 207 ms 6076 KB Output is correct
59 Incorrect 215 ms 5744 KB Output isn't correct
60 Correct 246 ms 6092 KB Output is correct
61 Correct 168 ms 6156 KB Output is correct
62 Incorrect 257 ms 6104 KB Output isn't correct
63 Correct 373 ms 6084 KB Output is correct
64 Correct 230 ms 4812 KB Output is correct
65 Correct 366 ms 5608 KB Output is correct
66 Correct 343 ms 5432 KB Output is correct
67 Incorrect 380 ms 6156 KB Output isn't correct
68 Correct 286 ms 5092 KB Output is correct
69 Correct 225 ms 6164 KB Output is correct
70 Incorrect 216 ms 5800 KB Output isn't correct
71 Correct 177 ms 4404 KB Output is correct
72 Correct 169 ms 6100 KB Output is correct
73 Correct 204 ms 6160 KB Output is correct
74 Incorrect 243 ms 6032 KB Output isn't correct
75 Incorrect 211 ms 5684 KB Output isn't correct
76 Correct 198 ms 6088 KB Output is correct
77 Correct 380 ms 5676 KB Output is correct
78 Correct 354 ms 6152 KB Output is correct
79 Incorrect 190 ms 5520 KB Output isn't correct
80 Incorrect 205 ms 6168 KB Output isn't correct
81 Incorrect 415 ms 6288 KB Output isn't correct
82 Correct 82 ms 3724 KB Output is correct
83 Correct 209 ms 6220 KB Output is correct
84 Incorrect 447 ms 6372 KB Output isn't correct
85 Correct 202 ms 6148 KB Output is correct
86 Correct 381 ms 6172 KB Output is correct
87 Correct 201 ms 5580 KB Output is correct
88 Incorrect 187 ms 5456 KB Output isn't correct
89 Incorrect 198 ms 5484 KB Output isn't correct
90 Incorrect 124 ms 4740 KB Output isn't correct
91 Incorrect 215 ms 5868 KB Output isn't correct
92 Incorrect 453 ms 6144 KB Output isn't correct
93 Incorrect 384 ms 5664 KB Output isn't correct
94 Incorrect 200 ms 5572 KB Output isn't correct
95 Correct 346 ms 6152 KB Output is correct
96 Incorrect 359 ms 5488 KB Output isn't correct
97 Incorrect 344 ms 5420 KB Output isn't correct
98 Correct 164 ms 6148 KB Output is correct
99 Incorrect 215 ms 5840 KB Output isn't correct
100 Correct 272 ms 6120 KB Output is correct
101 Correct 276 ms 5040 KB Output is correct
102 Correct 150 ms 6152 KB Output is correct