Submission #651735

# Submission time Handle Problem Language Result Execution time Memory
651735 2022-10-19T22:46:29 Z LucaGreg Art Class (IOI13_artclass) C++17
12 / 100
73 ms 22248 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;
int min_sz_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_;
}

int marc_greencomp(int li, int ci){
    int sz_greencomp = 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(green_image[vizl][vizc]) sz_greencomp += marc_greencomp(vizl, vizc);
    }
    return sz_greencomp;
}

int find_greencomp(){
    memset(marc, 0, sizeof(marc));
    int max_sz_greencomp = 0;
    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]){
                max_sz_greencomp = max(max_sz_greencomp, marc_greencomp(i, j));
                qtd_greencomp_++;
            }
        }
    }
    return max_sz_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)/12);
    min_bigcomp = 2;
    min_bigcomp_group14 = 6;
    //min_qtd_green = ((l*c)/4);
    min_dif = 5;
    min_colors_sum = 300;
    //min_qtd_greencomp = 8;
    min_sz_greencomp = ((l*c)/15);
    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 max_sz_greencomp = find_greencomp();
    if(max_sz_greencomp>min_sz_greencomp) return 2;
    else return 3;
    /*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:134:9: warning: unused variable 'qtd_comp' [-Wunused-variable]
  134 |     int qtd_comp = aux.second;
      |         ^~~~~~~~
artclass.cpp:142:9: warning: unused variable 'qtd_green' [-Wunused-variable]
  142 |     int qtd_green = do_green_image();
      |         ^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 46 ms 7536 KB Output is correct
2 Incorrect 63 ms 10528 KB Output isn't correct
3 Incorrect 57 ms 11260 KB Output isn't correct
4 Incorrect 64 ms 11528 KB Output isn't correct
5 Incorrect 59 ms 13908 KB Output isn't correct
6 Incorrect 51 ms 7172 KB Output isn't correct
7 Correct 51 ms 11980 KB Output is correct
8 Incorrect 60 ms 9704 KB Output isn't correct
9 Incorrect 40 ms 7136 KB Output isn't correct
10 Incorrect 54 ms 7712 KB Output isn't correct
11 Incorrect 53 ms 7288 KB Output isn't correct
12 Correct 40 ms 7500 KB Output is correct
13 Correct 50 ms 8700 KB Output is correct
14 Incorrect 52 ms 7160 KB Output isn't correct
15 Incorrect 48 ms 7984 KB Output isn't correct
16 Correct 52 ms 8528 KB Output is correct
17 Correct 53 ms 7500 KB Output is correct
18 Incorrect 54 ms 11164 KB Output isn't correct
19 Incorrect 64 ms 12428 KB Output isn't correct
20 Incorrect 63 ms 22248 KB Output isn't correct
21 Correct 50 ms 11724 KB Output is correct
22 Incorrect 53 ms 8504 KB Output isn't correct
23 Correct 50 ms 11832 KB Output is correct
24 Incorrect 35 ms 10916 KB Output isn't correct
25 Correct 39 ms 10956 KB Output is correct
26 Incorrect 47 ms 7116 KB Output isn't correct
27 Incorrect 41 ms 13808 KB Output isn't correct
28 Correct 42 ms 6668 KB Output is correct
29 Incorrect 49 ms 7068 KB Output isn't correct
30 Incorrect 44 ms 13704 KB Output isn't correct
31 Correct 16 ms 4948 KB Output is correct
32 Incorrect 60 ms 19832 KB Output isn't correct
33 Correct 43 ms 7572 KB Output is correct
34 Correct 54 ms 7464 KB Output is correct
35 Incorrect 55 ms 16548 KB Output isn't correct
36 Incorrect 41 ms 6872 KB Output isn't correct
37 Correct 35 ms 5708 KB Output is correct
38 Incorrect 53 ms 21492 KB Output isn't correct
39 Correct 55 ms 8856 KB Output is correct
40 Correct 25 ms 5716 KB Output is correct
41 Correct 54 ms 13952 KB Output is correct
42 Incorrect 52 ms 7892 KB Output isn't correct
43 Correct 49 ms 7540 KB Output is correct
44 Incorrect 62 ms 11344 KB Output isn't correct
45 Correct 46 ms 11896 KB Output is correct
46 Correct 45 ms 8488 KB Output is correct
47 Incorrect 59 ms 18252 KB Output isn't correct
48 Correct 50 ms 7036 KB Output is correct
49 Incorrect 54 ms 18232 KB Output isn't correct
50 Correct 15 ms 9216 KB Output is correct
51 Correct 49 ms 7500 KB Output is correct
52 Correct 46 ms 11816 KB Output is correct
53 Correct 45 ms 6720 KB Output is correct
54 Correct 30 ms 6016 KB Output is correct
55 Incorrect 62 ms 8908 KB Output isn't correct
56 Correct 42 ms 6740 KB Output is correct
57 Incorrect 49 ms 7176 KB Output isn't correct
58 Incorrect 56 ms 8256 KB Output isn't correct
59 Incorrect 49 ms 18020 KB Output isn't correct
60 Correct 51 ms 7384 KB Output is correct
61 Correct 56 ms 8288 KB Output is correct
62 Correct 47 ms 8448 KB Output is correct
63 Correct 37 ms 7516 KB Output is correct
64 Incorrect 62 ms 8124 KB Output isn't correct
65 Correct 56 ms 14716 KB Output is correct
66 Correct 36 ms 7944 KB Output is correct
67 Correct 46 ms 7276 KB Output is correct
68 Correct 38 ms 6676 KB Output is correct
69 Correct 53 ms 11840 KB Output is correct
70 Incorrect 34 ms 9612 KB Output isn't correct
71 Incorrect 69 ms 7056 KB Output isn't correct
72 Incorrect 71 ms 7588 KB Output isn't correct
73 Incorrect 52 ms 9072 KB Output isn't correct
74 Correct 54 ms 7148 KB Output is correct
75 Incorrect 41 ms 8420 KB Output isn't correct
76 Correct 37 ms 6380 KB Output is correct
77 Incorrect 49 ms 14352 KB Output isn't correct
78 Correct 33 ms 5892 KB Output is correct
79 Incorrect 50 ms 9060 KB Output isn't correct
80 Correct 51 ms 11980 KB Output is correct
81 Incorrect 40 ms 11472 KB Output isn't correct
82 Incorrect 56 ms 10540 KB Output isn't correct
83 Correct 51 ms 7460 KB Output is correct
84 Incorrect 41 ms 10168 KB Output isn't correct
85 Incorrect 52 ms 8360 KB Output isn't correct
86 Incorrect 64 ms 11080 KB Output isn't correct
87 Correct 50 ms 6936 KB Output is correct
88 Incorrect 73 ms 7604 KB Output isn't correct
89 Incorrect 51 ms 14776 KB Output isn't correct
90 Correct 31 ms 5988 KB Output is correct
91 Incorrect 59 ms 11440 KB Output isn't correct
92 Incorrect 46 ms 6976 KB Output isn't correct
93 Correct 53 ms 10168 KB Output is correct
94 Correct 36 ms 6248 KB Output is correct
95 Correct 49 ms 7628 KB Output is correct
96 Correct 46 ms 11080 KB Output is correct
97 Correct 51 ms 6992 KB Output is correct
98 Correct 29 ms 9804 KB Output is correct
99 Correct 37 ms 6412 KB Output is correct
100 Correct 25 ms 5660 KB Output is correct
101 Incorrect 50 ms 15052 KB Output isn't correct
102 Correct 48 ms 12116 KB Output is correct