Submission #651716

# Submission time Handle Problem Language Result Execution time Memory
651716 2022-10-19T21:42:59 Z Lawliet Art Class (IOI13_artclass) C++17
0 / 100
67 ms 25164 KB
#include <bits/stdc++.h>

using namespace std;

#include "artclass.h"

int l, c;

int min_sz_comp;
int min_bigcomp;
int min_bigcomp_group14;
int min_qtd_green;
int min_dif;
int min_colors_sum;
int min_qtd_greencomp;

struct pixel{
    int red, green, blue;
    pixel(int r = 0, int g = 0, int b = 0){
        red = r;
        green = g;
        blue = b;
    }
    
    bool operator == (pixel b){
        int red_dif = abs((*this).red - b.red);
        int green_dif = abs((*this).green - b.green);
        int blue_dif = abs((*this).blue - b.blue);
        return (red_dif<=min_dif && green_dif<=min_dif && blue_dif<=min_dif);
    }
    
    bool isGreen(){
        int sum = red + green + blue;
        return ((green>red && green>blue) && sum<min_colors_sum);
    }
};

pixel image[510][510];
bool green_image[510][510];
int marc[510][510];

int dl[] = {-1, 0, 1, 0};
int dc[] = {0, 1, 0, -1};

int find_comp(int li, int ci){
    int qtd_pixel = 1;
    marc[li][ci] = 1;
    for(int i=0;i<4;i++){
        int vizl = li + dl[i];
        int vizc = ci + dc[i];
        if(vizl<0 || vizl>l-1) continue;
        if(vizc<0 || vizc>c-1) continue;
        if(marc[vizl][vizc] == 1) continue;
        if(image[vizl][vizc] == image[li][ci]) qtd_pixel += find_comp(vizl, vizc);
    }
    return qtd_pixel;
}

pair<int, int> find_bigcomp(){
    memset(marc, 0, sizeof(marc));
    int qtd_bigcomp_ = 0;
    int qtd_comp_ = 0;
    for(int i=0;i<l;i++){
        for(int j=0;j<c;j++){
            if(marc[i][j] == 0){
                int sz_comp = find_comp(i, j);
                qtd_comp_++;
                if(sz_comp>min_sz_comp) qtd_bigcomp_++;
            }
        }
    }
    return {qtd_bigcomp_, qtd_comp_};
}

int do_green_image(){
    int qtd_green_ = 0;
    for(int i=0;i<l;i++){
        for(int j=0;j<c;j++){
            green_image[i][j] = image[i][j].isGreen();
            qtd_green_ += green_image[i][j];
        }
    }
    return qtd_green_;
}

void marc_greencomp(int li, int ci){
    marc[li][ci] = 1;
    for(int i=0;i<4;i++){
        int vizl = li + dl[i];
        int vizc = ci + dc[i];
        if(vizl<0 || vizl>l-1) continue;
        if(vizc<0 || vizc>c-1) continue;
        if(marc[vizl][vizc] == 1) continue;
        if(green_image[vizl][vizc]) marc_greencomp(vizl, vizc);
    }
}

int find_greencomp(){
    memset(marc, 0, sizeof(marc));
    int qtd_greencomp_ = 0;
    for(int i=0;i<l;i++){
        for(int j=0;j<c;j++){
            if(marc[i][j] == 0){
                marc_greencomp(i, j);
                qtd_greencomp_++;
            }
        }
    }
    return qtd_greencomp_;
}

int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
    l = H;
    c = W;
    min_sz_comp = (5/100)*(l*c);
    min_bigcomp = 2;
    min_bigcomp_group14 = 5;
    min_qtd_green = (25/100)*(l*c);
    min_dif = 15;
    min_colors_sum = 310;
    min_qtd_greencomp = 5;
    for(int i=0;i<l;i++){
        for(int j=0;j<c;j++){
            image[i][j] = pixel(R[i][j], G[i][j], B[i][j]);
        }
    }
    pair<int, int> aux = find_bigcomp();
    int qtd_bigcomp = aux.first;
    int qtd_comp = aux.second;

    if(qtd_bigcomp>min_bigcomp){
        
        if(qtd_bigcomp<min_bigcomp_group14) return 4;
        else return 1;
        return 0;
    }
    
    int qtd_green = do_green_image();
    if(qtd_green<min_qtd_green){
        return 3;
        return 0;
    }
    
    int qtd_greencomp = find_greencomp();
    if(qtd_greencomp<min_qtd_greencomp) return 2;
    else return 3;
    
    return 0;
}

Compilation message

artclass.cpp: In function 'int style(int, int, int (*)[500], int (*)[500], int (*)[500])':
artclass.cpp:129:9: warning: unused variable 'qtd_comp' [-Wunused-variable]
  129 |     int qtd_comp = aux.second;
      |         ^~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 47 ms 11004 KB Output isn't correct
2 Incorrect 39 ms 10388 KB Output isn't correct
3 Incorrect 60 ms 19280 KB Output isn't correct
4 Incorrect 55 ms 14028 KB Output isn't correct
5 Incorrect 51 ms 12140 KB Output isn't correct
6 Incorrect 56 ms 14172 KB Output isn't correct
7 Incorrect 50 ms 8364 KB Output isn't correct
8 Incorrect 47 ms 7188 KB Output isn't correct
9 Incorrect 52 ms 16960 KB Output isn't correct
10 Incorrect 32 ms 7148 KB Output isn't correct
11 Incorrect 48 ms 6908 KB Output isn't correct
12 Correct 55 ms 8952 KB Output is correct
13 Correct 52 ms 11252 KB Output is correct
14 Incorrect 34 ms 5864 KB Output isn't correct
15 Correct 50 ms 8268 KB Output is correct
16 Incorrect 45 ms 7116 KB Output isn't correct
17 Incorrect 24 ms 5532 KB Output isn't correct
18 Incorrect 41 ms 13404 KB Output isn't correct
19 Incorrect 50 ms 9316 KB Output isn't correct
20 Incorrect 52 ms 19296 KB Output isn't correct
21 Incorrect 16 ms 9464 KB Output isn't correct
22 Incorrect 52 ms 22416 KB Output isn't correct
23 Incorrect 49 ms 8436 KB Output isn't correct
24 Correct 32 ms 10828 KB Output is correct
25 Incorrect 52 ms 12884 KB Output isn't correct
26 Incorrect 36 ms 13772 KB Output isn't correct
27 Incorrect 40 ms 17096 KB Output isn't correct
28 Incorrect 50 ms 9164 KB Output isn't correct
29 Incorrect 30 ms 5804 KB Output isn't correct
30 Incorrect 50 ms 18388 KB Output isn't correct
31 Incorrect 53 ms 20212 KB Output isn't correct
32 Incorrect 35 ms 6128 KB Output isn't correct
33 Incorrect 13 ms 4884 KB Output isn't correct
34 Correct 45 ms 9940 KB Output is correct
35 Incorrect 51 ms 6944 KB Output isn't correct
36 Correct 36 ms 10560 KB Output is correct
37 Incorrect 48 ms 9152 KB Output isn't correct
38 Incorrect 44 ms 6884 KB Output isn't correct
39 Incorrect 51 ms 16972 KB Output isn't correct
40 Correct 53 ms 10360 KB Output is correct
41 Correct 55 ms 11032 KB Output is correct
42 Incorrect 25 ms 5524 KB Output isn't correct
43 Incorrect 52 ms 20300 KB Output isn't correct
44 Incorrect 44 ms 6708 KB Output isn't correct
45 Correct 36 ms 9060 KB Output is correct
46 Incorrect 49 ms 14652 KB Output isn't correct
47 Incorrect 39 ms 14568 KB Output isn't correct
48 Incorrect 55 ms 13356 KB Output isn't correct
49 Incorrect 49 ms 7548 KB Output isn't correct
50 Correct 55 ms 11780 KB Output is correct
51 Incorrect 43 ms 10852 KB Output isn't correct
52 Incorrect 49 ms 9820 KB Output isn't correct
53 Incorrect 51 ms 8012 KB Output isn't correct
54 Incorrect 30 ms 12500 KB Output isn't correct
55 Incorrect 58 ms 23688 KB Output isn't correct
56 Incorrect 53 ms 7020 KB Output isn't correct
57 Incorrect 37 ms 6344 KB Output isn't correct
58 Correct 56 ms 12572 KB Output is correct
59 Correct 54 ms 11172 KB Output is correct
60 Incorrect 51 ms 8524 KB Output isn't correct
61 Correct 45 ms 10572 KB Output is correct
62 Correct 60 ms 12792 KB Output is correct
63 Incorrect 47 ms 15480 KB Output isn't correct
64 Incorrect 39 ms 6948 KB Output isn't correct
65 Correct 31 ms 7332 KB Output is correct
66 Incorrect 54 ms 19064 KB Output isn't correct
67 Incorrect 43 ms 17528 KB Output isn't correct
68 Correct 58 ms 7476 KB Output is correct
69 Incorrect 50 ms 15632 KB Output isn't correct
70 Correct 56 ms 12584 KB Output is correct
71 Incorrect 48 ms 17232 KB Output isn't correct
72 Incorrect 37 ms 7280 KB Output isn't correct
73 Incorrect 50 ms 14072 KB Output isn't correct
74 Incorrect 51 ms 9916 KB Output isn't correct
75 Correct 57 ms 11692 KB Output is correct
76 Incorrect 48 ms 12000 KB Output isn't correct
77 Incorrect 49 ms 7372 KB Output isn't correct
78 Correct 58 ms 12992 KB Output is correct
79 Incorrect 67 ms 25164 KB Output isn't correct
80 Incorrect 47 ms 7252 KB Output isn't correct
81 Correct 60 ms 8088 KB Output is correct
82 Incorrect 54 ms 19868 KB Output isn't correct
83 Incorrect 42 ms 6584 KB Output isn't correct
84 Incorrect 31 ms 5876 KB Output isn't correct
85 Incorrect 43 ms 7468 KB Output isn't correct
86 Correct 56 ms 8392 KB Output is correct
87 Incorrect 49 ms 8364 KB Output isn't correct
88 Incorrect 52 ms 10648 KB Output isn't correct
89 Incorrect 57 ms 22348 KB Output isn't correct
90 Correct 46 ms 10144 KB Output is correct
91 Incorrect 47 ms 7276 KB Output isn't correct
92 Incorrect 46 ms 7900 KB Output isn't correct
93 Incorrect 39 ms 13388 KB Output isn't correct
94 Incorrect 47 ms 15544 KB Output isn't correct
95 Incorrect 44 ms 6564 KB Output isn't correct
96 Incorrect 54 ms 19556 KB Output isn't correct
97 Incorrect 30 ms 5580 KB Output isn't correct
98 Incorrect 41 ms 7244 KB Output isn't correct
99 Incorrect 48 ms 6732 KB Output isn't correct
100 Correct 47 ms 8904 KB Output is correct
101 Incorrect 39 ms 6072 KB Output isn't correct
102 Incorrect 35 ms 7252 KB Output isn't correct