Submission #518526

# Submission time Handle Problem Language Result Execution time Memory
518526 2022-01-24T03:32:40 Z tabr Art Class (IOI13_artclass) C++17
78 / 100
62 ms 5160 KB
#include <bits/stdc++.h>
using namespace std;
#ifdef tabr
#include "library/debug.cpp"
#else
#define debug(...)
#endif

#ifndef tabr
#include "artclass.h"
#endif

struct dsu {
    vector<int> p;
    vector<int> sz;
    int n;

    dsu(int _n) : n(_n) {
        p.resize(n);
        iota(p.begin(), p.end(), 0);
        sz.assign(n, 1);
    }

    inline int get(int x) {
        if (p[x] == x) {
            return x;
        } else {
            return p[x] = get(p[x]);
        }
    }

    inline bool unite(int x, int y) {
        x = get(x);
        y = get(y);
        if (x == y) {
            return false;
        }
        if (sz[x] > sz[y]) {
            swap(x, y);
        }
        p[x] = y;
        sz[y] += sz[x];
        return true;
    }

    inline bool same(int x, int y) {
        return (get(x) == get(y));
    }
};

int style(int h, int w, int r[500][500], int g[500][500], int b[500][500]) {
    dsu uf(h * w);
    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w - 1; j++) {
            int dr = abs(r[i][j] - r[i][j + 1]);
            int dg = abs(g[i][j] - g[i][j + 1]);
            int db = abs(b[i][j] - b[i][j + 1]);
            if (min({dr, dg, db}) < 30) {
                uf.unite(i * w + j, i * w + j + 1);
            }
        }
    }
    for (int i = 0; i < h - 1; i++) {
        for (int j = 0; j < w; j++) {
            int dr = abs(r[i][j] - r[i + 1][j]);
            int dg = abs(g[i][j] - g[i + 1][j]);
            int db = abs(b[i][j] - b[i + 1][j]);
            if (min({dr, dg, db}) < 30) {
                uf.unite(i * w + j, i * w + j + w);
            }
        }
    }
    int cnt = 0;
    for (int i = 0; i < h * w; i++) {
        if (uf.get(i) == i) {
            cnt++;
        }
    }
    double ratio = 1.0 * cnt / (h * w);
    debug(ratio);
    if (ratio < 0.0001) {
        return 4;
    }
    if (ratio > 0.02) {
        return 3;
    }
    cnt = 0;
    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++) {
            if (min({r[i][j], g[i][j], b[i][j]}) > 230) {
                cnt++;
            }
        }
    }
    ratio = 1.0 * cnt / (h * w);
    debug(ratio);
    if (ratio > 0.001) {
        return 1;
    } else {
        return 2;
    }
}

#ifdef tabr
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int h, w;
    cin >> h >> w;
    int r[500][500];
    int g[500][500];
    int b[500][500];
    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++) {
            cin >> r[i][j] >> g[i][j] >> b[i][j];
        }
    }
    cout << style(h, w, r, g, b) << '\n';
    return 0;
}
#endif
# Verdict Execution time Memory Grader output
1 Incorrect 40 ms 3912 KB Output isn't correct
2 Correct 41 ms 3928 KB Output is correct
3 Correct 47 ms 4856 KB Output is correct
4 Correct 51 ms 4308 KB Output is correct
5 Correct 39 ms 4420 KB Output is correct
6 Correct 45 ms 4232 KB Output is correct
7 Correct 42 ms 4136 KB Output is correct
8 Correct 47 ms 4780 KB Output is correct
9 Correct 42 ms 4700 KB Output is correct
10 Correct 33 ms 4072 KB Output is correct
11 Correct 31 ms 4296 KB Output is correct
12 Correct 36 ms 3520 KB Output is correct
13 Correct 23 ms 2252 KB Output is correct
14 Correct 46 ms 4420 KB Output is correct
15 Correct 27 ms 2372 KB Output is correct
16 Correct 45 ms 3980 KB Output is correct
17 Correct 29 ms 2884 KB Output is correct
18 Correct 53 ms 5060 KB Output is correct
19 Correct 45 ms 4760 KB Output is correct
20 Correct 42 ms 4280 KB Output is correct
21 Correct 53 ms 5120 KB Output is correct
22 Correct 22 ms 2272 KB Output is correct
23 Correct 53 ms 5072 KB Output is correct
24 Correct 51 ms 4704 KB Output is correct
25 Correct 46 ms 4780 KB Output is correct
26 Incorrect 44 ms 4348 KB Output isn't correct
27 Correct 41 ms 4676 KB Output is correct
28 Correct 44 ms 4696 KB Output is correct
29 Incorrect 46 ms 4492 KB Output isn't correct
30 Incorrect 52 ms 5048 KB Output isn't correct
31 Incorrect 48 ms 4932 KB Output isn't correct
32 Correct 45 ms 4784 KB Output is correct
33 Correct 43 ms 4776 KB Output is correct
34 Correct 46 ms 4872 KB Output is correct
35 Incorrect 44 ms 4444 KB Output isn't correct
36 Incorrect 45 ms 4548 KB Output isn't correct
37 Incorrect 51 ms 4520 KB Output isn't correct
38 Correct 43 ms 4684 KB Output is correct
39 Correct 40 ms 3972 KB Output is correct
40 Incorrect 33 ms 4428 KB Output isn't correct
41 Incorrect 51 ms 5088 KB Output isn't correct
42 Correct 47 ms 4236 KB Output is correct
43 Correct 38 ms 4476 KB Output is correct
44 Correct 32 ms 4368 KB Output is correct
45 Correct 12 ms 1176 KB Output is correct
46 Correct 51 ms 5160 KB Output is correct
47 Incorrect 52 ms 5152 KB Output isn't correct
48 Incorrect 44 ms 4824 KB Output isn't correct
49 Incorrect 41 ms 4016 KB Output isn't correct
50 Correct 51 ms 5120 KB Output is correct
51 Correct 35 ms 3312 KB Output is correct
52 Correct 58 ms 5152 KB Output is correct
53 Correct 39 ms 4524 KB Output is correct
54 Incorrect 34 ms 4180 KB Output isn't correct
55 Correct 50 ms 5036 KB Output is correct
56 Correct 44 ms 4760 KB Output is correct
57 Correct 46 ms 4804 KB Output is correct
58 Correct 52 ms 5076 KB Output is correct
59 Correct 13 ms 3604 KB Output is correct
60 Correct 34 ms 3140 KB Output is correct
61 Correct 41 ms 3884 KB Output is correct
62 Correct 43 ms 4736 KB Output is correct
63 Correct 29 ms 2900 KB Output is correct
64 Incorrect 45 ms 4816 KB Output isn't correct
65 Correct 41 ms 4556 KB Output is correct
66 Correct 45 ms 4924 KB Output is correct
67 Correct 44 ms 4804 KB Output is correct
68 Correct 38 ms 4452 KB Output is correct
69 Correct 45 ms 4856 KB Output is correct
70 Correct 51 ms 4164 KB Output is correct
71 Correct 33 ms 3352 KB Output is correct
72 Correct 51 ms 5060 KB Output is correct
73 Correct 27 ms 2776 KB Output is correct
74 Incorrect 43 ms 4724 KB Output isn't correct
75 Correct 37 ms 4364 KB Output is correct
76 Correct 42 ms 4072 KB Output is correct
77 Correct 42 ms 3816 KB Output is correct
78 Correct 43 ms 4200 KB Output is correct
79 Correct 51 ms 5008 KB Output is correct
80 Correct 45 ms 3872 KB Output is correct
81 Incorrect 52 ms 5036 KB Output isn't correct
82 Correct 39 ms 3924 KB Output is correct
83 Correct 34 ms 4352 KB Output is correct
84 Correct 62 ms 4420 KB Output is correct
85 Correct 47 ms 4820 KB Output is correct
86 Correct 44 ms 4716 KB Output is correct
87 Correct 42 ms 3800 KB Output is correct
88 Correct 35 ms 2724 KB Output is correct
89 Correct 49 ms 4172 KB Output is correct
90 Correct 30 ms 4296 KB Output is correct
91 Incorrect 34 ms 4388 KB Output isn't correct
92 Correct 45 ms 4724 KB Output is correct
93 Correct 59 ms 4268 KB Output is correct
94 Correct 42 ms 4708 KB Output is correct
95 Correct 41 ms 4036 KB Output is correct
96 Correct 34 ms 3392 KB Output is correct
97 Incorrect 41 ms 4676 KB Output isn't correct
98 Correct 32 ms 4428 KB Output is correct
99 Correct 43 ms 4796 KB Output is correct
100 Correct 57 ms 5140 KB Output is correct
101 Incorrect 28 ms 2892 KB Output isn't correct
102 Correct 51 ms 4544 KB Output is correct