Submission #679895

# Submission time Handle Problem Language Result Execution time Memory
679895 2023-01-09T15:44:49 Z bashkort Art Class (IOI13_artclass) C++17
21 / 100
2815 ms 6276 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;
}
 
double avgGreen() {
    double ans = 0;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            ans += G[i][j];
        }
    }
    return ans / (n * m);
}

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;
    
    auto green = avgGreen();

    if (color_cnt < 100 && color_cnt >= 3 && black_cnt > 50 && !any_rect) {
        return 3;
    }
    if (color_cnt < 15 && black_cnt > 50 && any_rect && green <= 70) {
        return 1;
    }
    if (color_cnt < 10 && any_big) {
        return 4;
    }
    
    return 2;
}

Compilation message

artclass.cpp: In function 'int check1()':
artclass.cpp:59:1: warning: no return statement in function returning non-void [-Wreturn-type]
   59 | }
      | ^
artclass.cpp: In function 'int check2()':
artclass.cpp:61:1: warning: no return statement in function returning non-void [-Wreturn-type]
   61 | }
      | ^
artclass.cpp: In function 'int check3()':
artclass.cpp:63:1: warning: no return statement in function returning non-void [-Wreturn-type]
   63 | }
      | ^
artclass.cpp: In function 'int check4()':
artclass.cpp:65:1: warning: no return statement in function returning non-void [-Wreturn-type]
   65 | }
      | ^
# Verdict Execution time Memory Grader output
1 Incorrect 59 ms 5584 KB Output isn't correct
2 Incorrect 1754 ms 5500 KB Output isn't correct
3 Incorrect 42 ms 6092 KB Output isn't correct
4 Incorrect 46 ms 5668 KB Output isn't correct
5 Incorrect 51 ms 6092 KB Output isn't correct
6 Incorrect 45 ms 6116 KB Output isn't correct
7 Correct 1502 ms 4744 KB Output is correct
8 Correct 41 ms 6092 KB Output is correct
9 Correct 2548 ms 5628 KB Output is correct
10 Correct 281 ms 3796 KB Output is correct
11 Incorrect 44 ms 5552 KB Output isn't correct
12 Incorrect 40 ms 5452 KB Output isn't correct
13 Incorrect 151 ms 5804 KB Output isn't correct
14 Incorrect 514 ms 6152 KB Output isn't correct
15 Incorrect 45 ms 6152 KB Output isn't correct
16 Correct 46 ms 5732 KB Output is correct
17 Correct 37 ms 6084 KB Output is correct
18 Correct 929 ms 4732 KB Output is correct
19 Incorrect 659 ms 5748 KB Output isn't correct
20 Incorrect 2241 ms 6152 KB Output isn't correct
21 Incorrect 35 ms 6092 KB Output isn't correct
22 Correct 2815 ms 5716 KB Output is correct
23 Correct 1485 ms 4720 KB Output is correct
24 Incorrect 81 ms 6152 KB Output isn't correct
25 Incorrect 36 ms 5068 KB Output isn't correct
26 Incorrect 187 ms 6148 KB Output isn't correct
27 Incorrect 30 ms 6104 KB Output isn't correct
28 Correct 2390 ms 5424 KB Output is correct
29 Correct 1930 ms 5104 KB Output is correct
30 Incorrect 45 ms 6144 KB Output isn't correct
31 Correct 43 ms 6060 KB Output is correct
32 Correct 37 ms 6100 KB Output is correct
33 Correct 35 ms 6092 KB Output is correct
34 Incorrect 52 ms 6080 KB Output isn't correct
35 Correct 2520 ms 6152 KB Output is correct
36 Correct 1064 ms 4428 KB Output is correct
37 Correct 90 ms 6156 KB Output is correct
38 Correct 1855 ms 5004 KB Output is correct
39 Correct 2477 ms 5504 KB Output is correct
40 Correct 26 ms 6100 KB Output is correct
41 Correct 43 ms 6096 KB Output is correct
42 Correct 50 ms 6052 KB Output is correct
43 Incorrect 41 ms 4740 KB Output isn't correct
44 Correct 2479 ms 6156 KB Output is correct
45 Correct 42 ms 6052 KB Output is correct
46 Correct 154 ms 6048 KB Output is correct
47 Incorrect 48 ms 6080 KB Output isn't correct
48 Correct 2710 ms 6152 KB Output is correct
49 Incorrect 662 ms 5520 KB Output isn't correct
50 Correct 48 ms 5964 KB Output is correct
51 Incorrect 1876 ms 5052 KB Output isn't correct
52 Incorrect 2606 ms 6148 KB Output isn't correct
53 Incorrect 367 ms 6148 KB Output isn't correct
54 Correct 125 ms 6092 KB Output is correct
55 Correct 46 ms 6092 KB Output is correct
56 Correct 40 ms 5504 KB Output is correct
57 Incorrect 553 ms 6056 KB Output isn't correct
58 Correct 2427 ms 5744 KB Output is correct
59 Incorrect 1420 ms 6092 KB Output isn't correct
60 Correct 1805 ms 6156 KB Output is correct
61 Correct 33 ms 6180 KB Output is correct
62 Correct 2649 ms 5656 KB Output is correct
63 Correct 37 ms 6092 KB Output is correct
64 Incorrect 1515 ms 6148 KB Output isn't correct
65 Incorrect 45 ms 5580 KB Output isn't correct
66 Correct 1172 ms 4484 KB Output is correct
67 Incorrect 2203 ms 6148 KB Output isn't correct
68 Correct 2257 ms 5660 KB Output is correct
69 Correct 2586 ms 5588 KB Output is correct
70 Correct 2504 ms 6152 KB Output is correct
71 Correct 2092 ms 6156 KB Output is correct
72 Incorrect 480 ms 6092 KB Output isn't correct
73 Incorrect 53 ms 5640 KB Output isn't correct
74 Incorrect 47 ms 6056 KB Output isn't correct
75 Correct 287 ms 6152 KB Output is correct
76 Correct 39 ms 6100 KB Output is correct
77 Correct 1944 ms 5428 KB Output is correct
78 Incorrect 52 ms 6100 KB Output isn't correct
79 Correct 51 ms 6052 KB Output is correct
80 Correct 2041 ms 5236 KB Output is correct
81 Correct 13 ms 6100 KB Output is correct
82 Incorrect 53 ms 6072 KB Output isn't correct
83 Correct 1831 ms 6248 KB Output is correct
84 Incorrect 55 ms 5416 KB Output isn't correct
85 Correct 1076 ms 4416 KB Output is correct
86 Correct 79 ms 6116 KB Output is correct
87 Correct 2288 ms 5376 KB Output is correct
88 Correct 2330 ms 5380 KB Output is correct
89 Incorrect 82 ms 5452 KB Output isn't correct
90 Correct 58 ms 6092 KB Output is correct
91 Incorrect 54 ms 6100 KB Output isn't correct
92 Incorrect 2298 ms 6276 KB Output isn't correct
93 Incorrect 44 ms 5408 KB Output isn't correct
94 Correct 1463 ms 4648 KB Output is correct
95 Incorrect 47 ms 6116 KB Output isn't correct
96 Incorrect 53 ms 6152 KB Output isn't correct
97 Incorrect 52 ms 6060 KB Output isn't correct
98 Incorrect 56 ms 6076 KB Output isn't correct
99 Correct 2286 ms 5648 KB Output is correct
100 Incorrect 2436 ms 5480 KB Output isn't correct
101 Correct 2696 ms 6152 KB Output is correct
102 Correct 42 ms 6092 KB Output is correct