Submission #679872

# Submission time Handle Problem Language Result Execution time Memory
679872 2023-01-09T13:39:24 Z bashkort Art Class (IOI13_artclass) C++17
2 / 100
2141 ms 6220 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({10, 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 = n / 3 * 2; i < n; ++i) {
        for (int j = m / 3 * 2; 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 / 10) {
        return 3;
    }
    if (color_cnt < 15 && black_cnt > 0 && any_rect && diff >= 7000) {
        return 1;
    }
    if (color_cnt < 10 && any_big && diff <= 7000) {
        return 4;
    }

    if (diff >= 7000) {
        return 1;
    }
    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 1752 ms 6044 KB Output isn't correct
2 Incorrect 1623 ms 6148 KB Output isn't correct
3 Correct 1614 ms 5480 KB Output is correct
4 Incorrect 1535 ms 5424 KB Output isn't correct
5 Incorrect 143 ms 6152 KB Output isn't correct
6 Correct 46 ms 5740 KB Output is correct
7 Correct 932 ms 4748 KB Output is correct
8 Incorrect 44 ms 6092 KB Output isn't correct
9 Incorrect 476 ms 6152 KB Output isn't correct
10 Incorrect 45 ms 5564 KB Output isn't correct
11 Incorrect 53 ms 6132 KB Output isn't correct
12 Correct 247 ms 6092 KB Output is correct
13 Incorrect 1495 ms 5476 KB Output isn't correct
14 Correct 76 ms 6116 KB Output is correct
15 Incorrect 944 ms 4716 KB Output isn't correct
16 Incorrect 1242 ms 5048 KB Output isn't correct
17 Incorrect 55 ms 6040 KB Output isn't correct
18 Incorrect 1267 ms 6152 KB Output isn't correct
19 Incorrect 2141 ms 6156 KB Output isn't correct
20 Incorrect 154 ms 3820 KB Output isn't correct
21 Incorrect 1153 ms 6152 KB Output isn't correct
22 Incorrect 44 ms 6092 KB Output isn't correct
23 Incorrect 1835 ms 5716 KB Output isn't correct
24 Incorrect 1717 ms 5656 KB Output isn't correct
25 Incorrect 50 ms 5692 KB Output isn't correct
26 Incorrect 1610 ms 6152 KB Output isn't correct
27 Correct 1821 ms 5748 KB Output is correct
28 Incorrect 965 ms 4748 KB Output isn't correct
29 Incorrect 555 ms 6148 KB Output isn't correct
30 Incorrect 729 ms 4480 KB Output isn't correct
31 Correct 1540 ms 5432 KB Output is correct
32 Correct 47 ms 6064 KB Output is correct
33 Incorrect 1304 ms 5172 KB Output isn't correct
34 Incorrect 38 ms 6220 KB Output isn't correct
35 Incorrect 53 ms 6148 KB Output isn't correct
36 Correct 41 ms 6100 KB Output is correct
37 Incorrect 62 ms 6112 KB Output isn't correct
38 Correct 1736 ms 5656 KB Output is correct
39 Incorrect 47 ms 5608 KB Output isn't correct
40 Incorrect 61 ms 6080 KB Output isn't correct
41 Incorrect 45 ms 6060 KB Output isn't correct
42 Correct 27 ms 6116 KB Output is correct
43 Incorrect 55 ms 5408 KB Output isn't correct
44 Incorrect 1197 ms 5004 KB Output isn't correct
45 Incorrect 46 ms 6092 KB Output isn't correct
46 Correct 1698 ms 5572 KB Output is correct
47 Correct 1730 ms 6148 KB Output is correct
48 Incorrect 1584 ms 6152 KB Output isn't correct
49 Incorrect 121 ms 5708 KB Output isn't correct
50 Correct 105 ms 6144 KB Output is correct
51 Incorrect 40 ms 5424 KB Output isn't correct
52 Incorrect 36 ms 5020 KB Output isn't correct
53 Correct 40 ms 6104 KB Output is correct
54 Correct 42 ms 6080 KB Output is correct
55 Incorrect 41 ms 6032 KB Output isn't correct
56 Incorrect 84 ms 5464 KB Output isn't correct
57 Incorrect 42 ms 5472 KB Output isn't correct
58 Incorrect 1774 ms 6148 KB Output isn't correct
59 Correct 48 ms 6032 KB Output is correct
60 Incorrect 643 ms 5520 KB Output isn't correct
61 Incorrect 1363 ms 6152 KB Output isn't correct
62 Correct 45 ms 6092 KB Output is correct
63 Incorrect 1622 ms 5504 KB Output isn't correct
64 Correct 45 ms 6152 KB Output is correct
65 Correct 39 ms 5568 KB Output is correct
66 Correct 34 ms 6136 KB Output is correct
67 Correct 45 ms 6156 KB Output is correct
68 Incorrect 49 ms 6052 KB Output isn't correct
69 Correct 52 ms 5960 KB Output is correct
70 Incorrect 1706 ms 5588 KB Output isn't correct
71 Incorrect 50 ms 5616 KB Output isn't correct
72 Incorrect 30 ms 6104 KB Output isn't correct
73 Incorrect 2095 ms 6156 KB Output isn't correct
74 Incorrect 53 ms 6092 KB Output isn't correct
75 Correct 65 ms 6156 KB Output is correct
76 Incorrect 71 ms 6048 KB Output isn't correct
77 Incorrect 45 ms 6096 KB Output isn't correct
78 Incorrect 1493 ms 5384 KB Output isn't correct
79 Correct 103 ms 6148 KB Output is correct
80 Correct 36 ms 6076 KB Output is correct
81 Incorrect 675 ms 4420 KB Output isn't correct
82 Correct 43 ms 6092 KB Output is correct
83 Correct 36 ms 6116 KB Output is correct
84 Incorrect 48 ms 5404 KB Output isn't correct
85 Correct 35 ms 6152 KB Output is correct
86 Incorrect 1445 ms 6172 KB Output isn't correct
87 Incorrect 1252 ms 5100 KB Output isn't correct
88 Incorrect 1459 ms 6152 KB Output isn't correct
89 Incorrect 45 ms 6092 KB Output isn't correct
90 Correct 13 ms 6104 KB Output is correct
91 Incorrect 321 ms 6156 KB Output isn't correct
92 Correct 1721 ms 5652 KB Output is correct
93 Incorrect 455 ms 5740 KB Output isn't correct
94 Correct 32 ms 6092 KB Output is correct
95 Incorrect 58 ms 6152 KB Output isn't correct
96 Incorrect 928 ms 4716 KB Output isn't correct
97 Incorrect 37 ms 4820 KB Output isn't correct
98 Incorrect 1192 ms 6152 KB Output isn't correct
99 Incorrect 366 ms 6152 KB Output isn't correct
100 Incorrect 690 ms 4416 KB Output isn't correct
101 Correct 49 ms 6064 KB Output is correct
102 Incorrect 1238 ms 5500 KB Output isn't correct