Submission #651721

# Submission time Handle Problem Language Result Execution time Memory
651721 2022-10-19T21:58:55 Z Lawliet Art Class (IOI13_artclass) C++17
5 / 100
75 ms 22220 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 = 5;
    min_qtd_green = ((l*c)/4);
    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 53 ms 8468 KB Output isn't correct
2 Incorrect 57 ms 14296 KB Output isn't correct
3 Incorrect 48 ms 7400 KB Output isn't correct
4 Incorrect 60 ms 9052 KB Output isn't correct
5 Incorrect 58 ms 7596 KB Output isn't correct
6 Incorrect 71 ms 7528 KB Output isn't correct
7 Incorrect 51 ms 8752 KB Output isn't correct
8 Incorrect 65 ms 18368 KB Output isn't correct
9 Incorrect 64 ms 11480 KB Output isn't correct
10 Correct 38 ms 6364 KB Output is correct
11 Incorrect 52 ms 6900 KB Output isn't correct
12 Incorrect 43 ms 12196 KB Output isn't correct
13 Incorrect 56 ms 6984 KB Output isn't correct
14 Incorrect 35 ms 10912 KB Output isn't correct
15 Correct 31 ms 5888 KB Output is correct
16 Correct 38 ms 6400 KB Output is correct
17 Incorrect 56 ms 11988 KB Output isn't correct
18 Incorrect 44 ms 13644 KB Output isn't correct
19 Incorrect 46 ms 6980 KB Output isn't correct
20 Correct 50 ms 6820 KB Output is correct
21 Incorrect 61 ms 14972 KB Output isn't correct
22 Correct 49 ms 7060 KB Output is correct
23 Correct 47 ms 6772 KB Output is correct
24 Correct 59 ms 7508 KB Output is correct
25 Incorrect 18 ms 9584 KB Output isn't correct
26 Correct 45 ms 6736 KB Output is correct
27 Correct 29 ms 5972 KB Output is correct
28 Correct 50 ms 12116 KB Output is correct
29 Correct 36 ms 7540 KB Output is correct
30 Correct 68 ms 10980 KB Output is correct
31 Incorrect 38 ms 6880 KB Output isn't correct
32 Correct 45 ms 7540 KB Output is correct
33 Incorrect 55 ms 12148 KB Output isn't correct
34 Incorrect 52 ms 8108 KB Output isn't correct
35 Correct 36 ms 6292 KB Output is correct
36 Incorrect 45 ms 13900 KB Output isn't correct
37 Correct 56 ms 9728 KB Output is correct
38 Incorrect 39 ms 13280 KB Output isn't correct
39 Correct 26 ms 5716 KB Output is correct
40 Correct 41 ms 6628 KB Output is correct
41 Correct 45 ms 6928 KB Output is correct
42 Incorrect 41 ms 8524 KB Output isn't correct
43 Correct 49 ms 9116 KB Output is correct
44 Incorrect 54 ms 8208 KB Output isn't correct
45 Incorrect 54 ms 8316 KB Output isn't correct
46 Correct 56 ms 10956 KB Output is correct
47 Incorrect 62 ms 8076 KB Output isn't correct
48 Correct 51 ms 10196 KB Output is correct
49 Incorrect 46 ms 12088 KB Output isn't correct
50 Incorrect 54 ms 6912 KB Output isn't correct
51 Incorrect 49 ms 6824 KB Output isn't correct
52 Correct 60 ms 10504 KB Output is correct
53 Incorrect 75 ms 12112 KB Output isn't correct
54 Incorrect 42 ms 7488 KB Output isn't correct
55 Incorrect 51 ms 17940 KB Output isn't correct
56 Incorrect 49 ms 7200 KB Output isn't correct
57 Correct 27 ms 5572 KB Output is correct
58 Incorrect 50 ms 7092 KB Output isn't correct
59 Incorrect 47 ms 11320 KB Output isn't correct
60 Incorrect 56 ms 16472 KB Output isn't correct
61 Incorrect 50 ms 15052 KB Output isn't correct
62 Incorrect 72 ms 22220 KB Output isn't correct
63 Correct 62 ms 11364 KB Output is correct
64 Correct 51 ms 7588 KB Output is correct
65 Correct 59 ms 7012 KB Output is correct
66 Incorrect 56 ms 7896 KB Output isn't correct
67 Incorrect 50 ms 8440 KB Output isn't correct
68 Incorrect 44 ms 6776 KB Output isn't correct
69 Incorrect 46 ms 8172 KB Output isn't correct
70 Incorrect 56 ms 8212 KB Output isn't correct
71 Incorrect 55 ms 12692 KB Output isn't correct
72 Incorrect 42 ms 11468 KB Output isn't correct
73 Correct 47 ms 7548 KB Output is correct
74 Incorrect 41 ms 11212 KB Output isn't correct
75 Incorrect 51 ms 10864 KB Output isn't correct
76 Correct 31 ms 6016 KB Output is correct
77 Incorrect 51 ms 14844 KB Output isn't correct
78 Incorrect 57 ms 10600 KB Output isn't correct
79 Correct 32 ms 6996 KB Output is correct
80 Correct 49 ms 10556 KB Output is correct
81 Incorrect 59 ms 11468 KB Output isn't correct
82 Incorrect 53 ms 7648 KB Output isn't correct
83 Incorrect 53 ms 19920 KB Output isn't correct
84 Correct 27 ms 5676 KB Output is correct
85 Correct 47 ms 7500 KB Output is correct
86 Correct 45 ms 7448 KB Output is correct
87 Correct 16 ms 4952 KB Output is correct
88 Incorrect 56 ms 10536 KB Output isn't correct
89 Incorrect 65 ms 7936 KB Output isn't correct
90 Incorrect 52 ms 7396 KB Output isn't correct
91 Incorrect 30 ms 9772 KB Output isn't correct
92 Correct 51 ms 8572 KB Output is correct
93 Correct 65 ms 11144 KB Output is correct
94 Incorrect 32 ms 7756 KB Output isn't correct
95 Incorrect 56 ms 21580 KB Output isn't correct
96 Correct 42 ms 7540 KB Output is correct
97 Correct 57 ms 6680 KB Output is correct
98 Incorrect 36 ms 9536 KB Output isn't correct
99 Correct 39 ms 7424 KB Output is correct
100 Incorrect 47 ms 7212 KB Output isn't correct
101 Incorrect 55 ms 18228 KB Output isn't correct
102 Incorrect 59 ms 11084 KB Output isn't correct