Submission #651715

# Submission time Handle Problem Language Result Execution time Memory
651715 2022-10-19T21:38:10 Z LucaGreg Art Class (IOI13_artclass) C++17
0 / 100
66 ms 28144 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) printf("4\n");
        else printf("1\n");
        return 0;
    }
    
    int qtd_green = do_green_image();
    if(qtd_green<min_qtd_green){
        printf("3\n");
        return 0;
    }
    
    int qtd_greencomp = find_greencomp();
    if(qtd_greencomp<min_qtd_greencomp) printf("2\n");
    else printf("3\n");
    
    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 50 ms 9468 KB Output isn't correct
2 Incorrect 44 ms 8544 KB Output isn't correct
3 Incorrect 49 ms 8864 KB Output isn't correct
4 Incorrect 53 ms 9656 KB Output isn't correct
5 Incorrect 49 ms 11612 KB Output isn't correct
6 Incorrect 44 ms 8736 KB Output isn't correct
7 Incorrect 47 ms 12148 KB Output isn't correct
8 Incorrect 56 ms 14376 KB Output isn't correct
9 Incorrect 58 ms 10664 KB Output isn't correct
10 Incorrect 56 ms 25676 KB Output isn't correct
11 Incorrect 54 ms 12784 KB Output isn't correct
12 Incorrect 55 ms 21408 KB Output isn't correct
13 Incorrect 61 ms 14012 KB Output isn't correct
14 Incorrect 30 ms 13712 KB Output isn't correct
15 Incorrect 58 ms 15432 KB Output isn't correct
16 Incorrect 41 ms 15308 KB Output isn't correct
17 Incorrect 54 ms 22220 KB Output isn't correct
18 Incorrect 26 ms 6444 KB Output isn't correct
19 Incorrect 31 ms 7196 KB Output isn't correct
20 Incorrect 29 ms 6760 KB Output isn't correct
21 Incorrect 38 ms 7960 KB Output isn't correct
22 Incorrect 51 ms 10292 KB Output isn't correct
23 Incorrect 52 ms 16024 KB Output isn't correct
24 Incorrect 33 ms 12380 KB Output isn't correct
25 Incorrect 44 ms 9460 KB Output isn't correct
26 Incorrect 47 ms 8612 KB Output isn't correct
27 Incorrect 33 ms 8780 KB Output isn't correct
28 Incorrect 51 ms 22076 KB Output isn't correct
29 Incorrect 51 ms 16672 KB Output isn't correct
30 Incorrect 52 ms 21648 KB Output isn't correct
31 Incorrect 51 ms 10840 KB Output isn't correct
32 Incorrect 37 ms 15232 KB Output isn't correct
33 Incorrect 39 ms 8660 KB Output isn't correct
34 Incorrect 48 ms 12828 KB Output isn't correct
35 Incorrect 63 ms 15520 KB Output isn't correct
36 Incorrect 38 ms 12104 KB Output isn't correct
37 Incorrect 48 ms 11212 KB Output isn't correct
38 Incorrect 60 ms 10212 KB Output isn't correct
39 Incorrect 49 ms 12268 KB Output isn't correct
40 Incorrect 55 ms 11028 KB Output isn't correct
41 Incorrect 51 ms 24140 KB Output isn't correct
42 Incorrect 55 ms 9040 KB Output isn't correct
43 Incorrect 57 ms 11752 KB Output isn't correct
44 Incorrect 36 ms 7700 KB Output isn't correct
45 Incorrect 51 ms 12724 KB Output isn't correct
46 Incorrect 52 ms 16660 KB Output isn't correct
47 Incorrect 39 ms 15052 KB Output isn't correct
48 Incorrect 37 ms 8824 KB Output isn't correct
49 Incorrect 48 ms 17616 KB Output isn't correct
50 Incorrect 43 ms 18668 KB Output isn't correct
51 Incorrect 44 ms 8720 KB Output isn't correct
52 Incorrect 55 ms 17700 KB Output isn't correct
53 Incorrect 51 ms 9828 KB Output isn't correct
54 Incorrect 52 ms 11468 KB Output isn't correct
55 Incorrect 56 ms 13704 KB Output isn't correct
56 Incorrect 51 ms 9424 KB Output isn't correct
57 Incorrect 48 ms 19020 KB Output isn't correct
58 Incorrect 50 ms 10272 KB Output isn't correct
59 Incorrect 50 ms 9072 KB Output isn't correct
60 Incorrect 58 ms 12008 KB Output isn't correct
61 Incorrect 46 ms 12612 KB Output isn't correct
62 Incorrect 48 ms 17368 KB Output isn't correct
63 Incorrect 51 ms 14988 KB Output isn't correct
64 Incorrect 51 ms 11364 KB Output isn't correct
65 Incorrect 49 ms 20428 KB Output isn't correct
66 Incorrect 49 ms 14016 KB Output isn't correct
67 Incorrect 47 ms 13712 KB Output isn't correct
68 Incorrect 37 ms 10784 KB Output isn't correct
69 Incorrect 39 ms 16040 KB Output isn't correct
70 Incorrect 54 ms 21604 KB Output isn't correct
71 Incorrect 31 ms 7120 KB Output isn't correct
72 Incorrect 45 ms 9100 KB Output isn't correct
73 Incorrect 48 ms 9364 KB Output isn't correct
74 Incorrect 49 ms 11152 KB Output isn't correct
75 Incorrect 41 ms 11948 KB Output isn't correct
76 Incorrect 38 ms 7832 KB Output isn't correct
77 Incorrect 44 ms 12488 KB Output isn't correct
78 Incorrect 56 ms 22444 KB Output isn't correct
79 Incorrect 62 ms 21452 KB Output isn't correct
80 Incorrect 59 ms 13752 KB Output isn't correct
81 Incorrect 65 ms 28144 KB Output isn't correct
82 Incorrect 46 ms 9388 KB Output isn't correct
83 Incorrect 57 ms 15364 KB Output isn't correct
84 Incorrect 66 ms 15688 KB Output isn't correct
85 Incorrect 24 ms 6476 KB Output isn't correct
86 Incorrect 41 ms 9164 KB Output isn't correct
87 Incorrect 58 ms 24776 KB Output isn't correct
88 Incorrect 47 ms 9676 KB Output isn't correct
89 Incorrect 32 ms 7228 KB Output isn't correct
90 Incorrect 45 ms 8472 KB Output isn't correct
91 Incorrect 34 ms 8488 KB Output isn't correct
92 Incorrect 53 ms 19000 KB Output isn't correct
93 Incorrect 58 ms 10780 KB Output isn't correct
94 Incorrect 14 ms 5476 KB Output isn't correct
95 Incorrect 51 ms 15960 KB Output isn't correct
96 Incorrect 57 ms 15480 KB Output isn't correct
97 Incorrect 51 ms 8960 KB Output isn't correct
98 Incorrect 55 ms 19572 KB Output isn't correct
99 Incorrect 44 ms 19372 KB Output isn't correct
100 Incorrect 55 ms 13648 KB Output isn't correct
101 Incorrect 51 ms 10388 KB Output isn't correct
102 Incorrect 15 ms 10000 KB Output isn't correct