Submission #651717

# Submission time Handle Problem Language Result Execution time Memory
651717 2022-10-19T21:46:16 Z LucaGreg Art Class (IOI13_artclass) C++17
5 / 100
70 ms 25132 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 = ((l*c)/20);
    min_bigcomp = 2;
    min_bigcomp_group14 = 5;
    min_qtd_green = ((l*c)/25);
    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;
    }
    
    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 Correct 47 ms 8900 KB Output is correct
2 Incorrect 59 ms 12632 KB Output isn't correct
3 Incorrect 59 ms 8060 KB Output isn't correct
4 Incorrect 36 ms 14028 KB Output isn't correct
5 Incorrect 63 ms 25132 KB Output isn't correct
6 Incorrect 70 ms 9164 KB Output isn't correct
7 Correct 36 ms 5992 KB Output is correct
8 Correct 32 ms 5684 KB Output is correct
9 Incorrect 60 ms 17740 KB Output isn't correct
10 Correct 52 ms 7100 KB Output is correct
11 Incorrect 38 ms 9152 KB Output isn't correct
12 Incorrect 55 ms 15744 KB Output isn't correct
13 Incorrect 57 ms 19576 KB Output isn't correct
14 Incorrect 50 ms 20196 KB Output isn't correct
15 Correct 54 ms 6904 KB Output is correct
16 Incorrect 39 ms 14876 KB Output isn't correct
17 Incorrect 54 ms 20156 KB Output isn't correct
18 Correct 48 ms 7440 KB Output is correct
19 Incorrect 61 ms 14236 KB Output isn't correct
20 Correct 54 ms 7504 KB Output is correct
21 Correct 49 ms 10188 KB Output is correct
22 Correct 34 ms 5956 KB Output is correct
23 Correct 44 ms 10572 KB Output is correct
24 Correct 53 ms 14240 KB Output is correct
25 Correct 46 ms 5952 KB Output is correct
26 Correct 54 ms 7472 KB Output is correct
27 Incorrect 58 ms 9468 KB Output isn't correct
28 Incorrect 61 ms 7884 KB Output isn't correct
29 Correct 55 ms 11236 KB Output is correct
30 Incorrect 70 ms 11056 KB Output isn't correct
31 Incorrect 50 ms 11196 KB Output isn't correct
32 Incorrect 56 ms 10572 KB Output isn't correct
33 Correct 57 ms 12556 KB Output is correct
34 Incorrect 59 ms 6984 KB Output isn't correct
35 Incorrect 50 ms 18588 KB Output isn't correct
36 Incorrect 57 ms 8524 KB Output isn't correct
37 Incorrect 43 ms 17240 KB Output isn't correct
38 Incorrect 53 ms 12336 KB Output isn't correct
39 Incorrect 61 ms 8452 KB Output isn't correct
40 Correct 28 ms 5624 KB Output is correct
41 Correct 56 ms 7524 KB Output is correct
42 Correct 52 ms 7508 KB Output is correct
43 Incorrect 47 ms 13744 KB Output isn't correct
44 Correct 54 ms 6988 KB Output is correct
45 Incorrect 51 ms 14856 KB Output isn't correct
46 Incorrect 52 ms 12116 KB Output isn't correct
47 Incorrect 50 ms 15764 KB Output isn't correct
48 Correct 30 ms 7372 KB Output is correct
49 Incorrect 55 ms 10076 KB Output isn't correct
50 Incorrect 58 ms 22576 KB Output isn't correct
51 Incorrect 34 ms 11100 KB Output isn't correct
52 Incorrect 50 ms 9076 KB Output isn't correct
53 Incorrect 40 ms 7796 KB Output isn't correct
54 Incorrect 54 ms 8696 KB Output isn't correct
55 Correct 15 ms 4948 KB Output is correct
56 Correct 45 ms 9968 KB Output is correct
57 Incorrect 16 ms 9736 KB Output isn't correct
58 Correct 60 ms 7628 KB Output is correct
59 Correct 40 ms 7560 KB Output is correct
60 Correct 56 ms 7132 KB Output is correct
61 Incorrect 57 ms 11724 KB Output isn't correct
62 Incorrect 59 ms 12788 KB Output isn't correct
63 Incorrect 56 ms 8384 KB Output isn't correct
64 Correct 55 ms 11220 KB Output is correct
65 Correct 40 ms 7524 KB Output is correct
66 Correct 54 ms 7884 KB Output is correct
67 Incorrect 57 ms 19396 KB Output isn't correct
68 Incorrect 58 ms 23600 KB Output isn't correct
69 Incorrect 61 ms 11212 KB Output isn't correct
70 Incorrect 52 ms 20200 KB Output isn't correct
71 Correct 62 ms 8572 KB Output is correct
72 Correct 38 ms 6272 KB Output is correct
73 Incorrect 58 ms 15984 KB Output isn't correct
74 Incorrect 51 ms 8484 KB Output isn't correct
75 Correct 47 ms 6760 KB Output is correct
76 Incorrect 56 ms 13068 KB Output isn't correct
77 Incorrect 50 ms 17312 KB Output isn't correct
78 Incorrect 70 ms 13564 KB Output isn't correct
79 Correct 30 ms 5716 KB Output is correct
80 Incorrect 65 ms 7372 KB Output isn't correct
81 Incorrect 55 ms 8104 KB Output isn't correct
82 Correct 50 ms 6828 KB Output is correct
83 Incorrect 56 ms 14264 KB Output isn't correct
84 Incorrect 56 ms 10768 KB Output isn't correct
85 Correct 45 ms 6396 KB Output is correct
86 Incorrect 53 ms 17228 KB Output isn't correct
87 Incorrect 46 ms 17356 KB Output isn't correct
88 Incorrect 48 ms 22600 KB Output isn't correct
89 Incorrect 52 ms 8524 KB Output isn't correct
90 Incorrect 53 ms 19572 KB Output isn't correct
91 Incorrect 35 ms 12760 KB Output isn't correct
92 Correct 56 ms 12904 KB Output is correct
93 Correct 36 ms 10484 KB Output is correct
94 Incorrect 56 ms 7220 KB Output isn't correct
95 Correct 51 ms 7056 KB Output is correct
96 Incorrect 42 ms 13672 KB Output isn't correct
97 Incorrect 40 ms 10404 KB Output isn't correct
98 Incorrect 54 ms 9576 KB Output isn't correct
99 Correct 55 ms 11088 KB Output is correct
100 Correct 58 ms 11724 KB Output is correct
101 Incorrect 52 ms 19768 KB Output isn't correct
102 Correct 46 ms 6316 KB Output is correct