Submission #651724

# Submission time Handle Problem Language Result Execution time Memory
651724 2022-10-19T22:03:05 Z LucaGreg Art Class (IOI13_artclass) C++17
2 / 100
70 ms 22172 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 && green_image[i][j]){
                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 = ((l*c)/20);
    min_bigcomp = 3;
    min_bigcomp_group14 = 8;
    min_qtd_green = ((l*c)/10);
    min_dif = 5;
    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;
    }
    
    int qtd_green = do_green_image();
    if(qtd_green<min_qtd_green){
        return 3;
    }
    
    int qtd_greencomp = find_greencomp();
    if(qtd_greencomp<min_qtd_greencomp) return 2;
    else return 3;
}

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 48 ms 7240 KB Output isn't correct
2 Correct 48 ms 6988 KB Output is correct
3 Incorrect 52 ms 11932 KB Output isn't correct
4 Incorrect 57 ms 11432 KB Output isn't correct
5 Incorrect 61 ms 11472 KB Output isn't correct
6 Incorrect 58 ms 10648 KB Output isn't correct
7 Incorrect 52 ms 8088 KB Output isn't correct
8 Incorrect 40 ms 11212 KB Output isn't correct
9 Correct 50 ms 12108 KB Output is correct
10 Correct 30 ms 9748 KB Output is correct
11 Correct 26 ms 5676 KB Output is correct
12 Incorrect 58 ms 17868 KB Output isn't correct
13 Incorrect 58 ms 11128 KB Output isn't correct
14 Incorrect 58 ms 12768 KB Output isn't correct
15 Incorrect 55 ms 8380 KB Output isn't correct
16 Incorrect 53 ms 10888 KB Output isn't correct
17 Incorrect 44 ms 13252 KB Output isn't correct
18 Correct 36 ms 7488 KB Output is correct
19 Incorrect 50 ms 7116 KB Output isn't correct
20 Incorrect 45 ms 7040 KB Output isn't correct
21 Incorrect 49 ms 7048 KB Output isn't correct
22 Incorrect 57 ms 11072 KB Output isn't correct
23 Incorrect 58 ms 7588 KB Output isn't correct
24 Correct 36 ms 6288 KB Output is correct
25 Incorrect 57 ms 8180 KB Output isn't correct
26 Incorrect 46 ms 7480 KB Output isn't correct
27 Incorrect 16 ms 9500 KB Output isn't correct
28 Incorrect 50 ms 14796 KB Output isn't correct
29 Incorrect 32 ms 9516 KB Output isn't correct
30 Correct 46 ms 6708 KB Output is correct
31 Incorrect 51 ms 12108 KB Output isn't correct
32 Incorrect 47 ms 12060 KB Output isn't correct
33 Incorrect 54 ms 19924 KB Output isn't correct
34 Incorrect 36 ms 10852 KB Output isn't correct
35 Incorrect 59 ms 16424 KB Output isn't correct
36 Correct 39 ms 7488 KB Output is correct
37 Incorrect 47 ms 7984 KB Output isn't correct
38 Incorrect 48 ms 7116 KB Output isn't correct
39 Incorrect 51 ms 11256 KB Output isn't correct
40 Correct 45 ms 6928 KB Output is correct
41 Incorrect 51 ms 7756 KB Output isn't correct
42 Incorrect 50 ms 7344 KB Output isn't correct
43 Incorrect 68 ms 11312 KB Output isn't correct
44 Incorrect 31 ms 7076 KB Output isn't correct
45 Incorrect 48 ms 9140 KB Output isn't correct
46 Incorrect 51 ms 9036 KB Output isn't correct
47 Correct 31 ms 5936 KB Output is correct
48 Correct 37 ms 6264 KB Output is correct
49 Incorrect 49 ms 10572 KB Output isn't correct
50 Correct 47 ms 10496 KB Output is correct
51 Incorrect 45 ms 7276 KB Output isn't correct
52 Incorrect 50 ms 8100 KB Output isn't correct
53 Correct 45 ms 6708 KB Output is correct
54 Incorrect 40 ms 6832 KB Output isn't correct
55 Correct 26 ms 5636 KB Output is correct
56 Correct 38 ms 7444 KB Output is correct
57 Incorrect 58 ms 8760 KB Output isn't correct
58 Incorrect 51 ms 7312 KB Output isn't correct
59 Correct 30 ms 5908 KB Output is correct
60 Incorrect 50 ms 6840 KB Output isn't correct
61 Incorrect 59 ms 8280 KB Output isn't correct
62 Correct 49 ms 7100 KB Output is correct
63 Correct 26 ms 5716 KB Output is correct
64 Incorrect 58 ms 11112 KB Output isn't correct
65 Correct 41 ms 7500 KB Output is correct
66 Correct 29 ms 5972 KB Output is correct
67 Correct 59 ms 10488 KB Output is correct
68 Incorrect 37 ms 10232 KB Output isn't correct
69 Incorrect 62 ms 22172 KB Output isn't correct
70 Incorrect 65 ms 12164 KB Output isn't correct
71 Incorrect 57 ms 9560 KB Output isn't correct
72 Incorrect 43 ms 8456 KB Output isn't correct
73 Incorrect 70 ms 7524 KB Output isn't correct
74 Correct 50 ms 7500 KB Output is correct
75 Incorrect 49 ms 8448 KB Output isn't correct
76 Correct 45 ms 7428 KB Output is correct
77 Incorrect 68 ms 18340 KB Output isn't correct
78 Incorrect 48 ms 8080 KB Output isn't correct
79 Incorrect 52 ms 7796 KB Output isn't correct
80 Incorrect 42 ms 13904 KB Output isn't correct
81 Incorrect 51 ms 8780 KB Output isn't correct
82 Incorrect 32 ms 7848 KB Output isn't correct
83 Incorrect 41 ms 11428 KB Output isn't correct
84 Incorrect 48 ms 12128 KB Output isn't correct
85 Incorrect 54 ms 10952 KB Output isn't correct
86 Incorrect 55 ms 21496 KB Output isn't correct
87 Incorrect 51 ms 15060 KB Output isn't correct
88 Incorrect 42 ms 13620 KB Output isn't correct
89 Correct 49 ms 6836 KB Output is correct
90 Correct 47 ms 7544 KB Output is correct
91 Correct 49 ms 6732 KB Output is correct
92 Incorrect 37 ms 8468 KB Output isn't correct
93 Incorrect 52 ms 8528 KB Output isn't correct
94 Correct 14 ms 4948 KB Output is correct
95 Correct 53 ms 7548 KB Output is correct
96 Correct 40 ms 6464 KB Output is correct
97 Incorrect 56 ms 18196 KB Output isn't correct
98 Incorrect 66 ms 14956 KB Output isn't correct
99 Correct 46 ms 7464 KB Output is correct
100 Incorrect 47 ms 7052 KB Output isn't correct
101 Correct 42 ms 6604 KB Output is correct
102 Incorrect 50 ms 14284 KB Output isn't correct