답안 #651729

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
651729 2022-10-19T22:21:31 Z LucaGreg 미술 수업 (IOI13_artclass) C++17
9 / 100
92 ms 23628 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)/15);
    min_bigcomp = 3;
    min_bigcomp_group14 = 6;
    //min_qtd_green = ((l*c)/4);
    min_dif = 10;
    min_colors_sum = 300;
    //min_qtd_greencomp = 8;
    min_sz_greencomp = ((l*c)/20);
    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:143:9: warning: unused variable 'qtd_green' [-Wunused-variable]
  143 |     int qtd_green = do_green_image();
      |         ^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 6424 KB Output is correct
2 Correct 47 ms 11340 KB Output is correct
3 Incorrect 42 ms 13844 KB Output isn't correct
4 Incorrect 39 ms 15224 KB Output isn't correct
5 Correct 50 ms 7512 KB Output is correct
6 Incorrect 60 ms 8064 KB Output isn't correct
7 Incorrect 50 ms 19064 KB Output isn't correct
8 Correct 61 ms 11088 KB Output is correct
9 Incorrect 70 ms 11156 KB Output isn't correct
10 Incorrect 54 ms 23628 KB Output isn't correct
11 Correct 52 ms 11832 KB Output is correct
12 Correct 27 ms 5656 KB Output is correct
13 Correct 55 ms 8940 KB Output is correct
14 Incorrect 51 ms 13604 KB Output isn't correct
15 Incorrect 63 ms 12904 KB Output isn't correct
16 Incorrect 48 ms 16308 KB Output isn't correct
17 Incorrect 54 ms 15208 KB Output isn't correct
18 Correct 43 ms 7612 KB Output is correct
19 Incorrect 50 ms 18820 KB Output isn't correct
20 Correct 45 ms 7540 KB Output is correct
21 Incorrect 50 ms 6988 KB Output isn't correct
22 Incorrect 62 ms 7712 KB Output isn't correct
23 Incorrect 59 ms 13088 KB Output isn't correct
24 Correct 49 ms 8452 KB Output is correct
25 Correct 40 ms 6304 KB Output is correct
26 Correct 50 ms 7068 KB Output is correct
27 Correct 59 ms 13956 KB Output is correct
28 Correct 48 ms 10132 KB Output is correct
29 Incorrect 49 ms 10396 KB Output isn't correct
30 Correct 53 ms 8872 KB Output is correct
31 Incorrect 20 ms 9688 KB Output isn't correct
32 Incorrect 39 ms 8916 KB Output isn't correct
33 Incorrect 50 ms 8684 KB Output isn't correct
34 Correct 55 ms 7644 KB Output is correct
35 Correct 52 ms 9452 KB Output is correct
36 Correct 33 ms 6028 KB Output is correct
37 Correct 46 ms 7548 KB Output is correct
38 Correct 50 ms 6724 KB Output is correct
39 Correct 27 ms 5568 KB Output is correct
40 Incorrect 66 ms 17396 KB Output isn't correct
41 Incorrect 48 ms 17628 KB Output isn't correct
42 Incorrect 58 ms 11356 KB Output isn't correct
43 Correct 51 ms 6684 KB Output is correct
44 Incorrect 43 ms 15852 KB Output isn't correct
45 Incorrect 53 ms 14048 KB Output isn't correct
46 Incorrect 51 ms 7160 KB Output isn't correct
47 Correct 31 ms 5980 KB Output is correct
48 Correct 46 ms 7500 KB Output is correct
49 Incorrect 34 ms 7252 KB Output isn't correct
50 Correct 38 ms 10268 KB Output is correct
51 Correct 50 ms 7140 KB Output is correct
52 Correct 47 ms 7244 KB Output is correct
53 Correct 56 ms 11796 KB Output is correct
54 Incorrect 54 ms 9424 KB Output isn't correct
55 Incorrect 44 ms 15772 KB Output isn't correct
56 Correct 49 ms 7572 KB Output is correct
57 Incorrect 52 ms 8324 KB Output isn't correct
58 Correct 36 ms 7888 KB Output is correct
59 Incorrect 54 ms 22352 KB Output isn't correct
60 Incorrect 53 ms 16636 KB Output isn't correct
61 Correct 52 ms 9840 KB Output is correct
62 Incorrect 64 ms 8204 KB Output isn't correct
63 Correct 33 ms 5956 KB Output is correct
64 Correct 42 ms 6716 KB Output is correct
65 Correct 47 ms 8568 KB Output is correct
66 Incorrect 38 ms 14284 KB Output isn't correct
67 Incorrect 56 ms 10192 KB Output isn't correct
68 Incorrect 58 ms 21444 KB Output isn't correct
69 Incorrect 60 ms 7904 KB Output isn't correct
70 Correct 58 ms 10188 KB Output is correct
71 Incorrect 43 ms 7332 KB Output isn't correct
72 Correct 46 ms 7464 KB Output is correct
73 Incorrect 64 ms 11512 KB Output isn't correct
74 Correct 46 ms 6256 KB Output is correct
75 Incorrect 79 ms 22216 KB Output isn't correct
76 Incorrect 62 ms 8372 KB Output isn't correct
77 Correct 52 ms 11948 KB Output is correct
78 Correct 55 ms 11052 KB Output is correct
79 Incorrect 63 ms 11852 KB Output isn't correct
80 Incorrect 59 ms 8148 KB Output isn't correct
81 Correct 27 ms 5664 KB Output is correct
82 Correct 61 ms 7244 KB Output is correct
83 Incorrect 65 ms 12692 KB Output isn't correct
84 Correct 56 ms 9276 KB Output is correct
85 Correct 56 ms 10956 KB Output is correct
86 Correct 49 ms 6836 KB Output is correct
87 Correct 38 ms 7472 KB Output is correct
88 Incorrect 92 ms 22016 KB Output isn't correct
89 Correct 48 ms 6940 KB Output is correct
90 Incorrect 76 ms 19604 KB Output isn't correct
91 Incorrect 67 ms 7328 KB Output isn't correct
92 Incorrect 47 ms 6952 KB Output isn't correct
93 Correct 18 ms 5008 KB Output is correct
94 Incorrect 51 ms 18736 KB Output isn't correct
95 Incorrect 47 ms 7340 KB Output isn't correct
96 Incorrect 65 ms 16716 KB Output isn't correct
97 Incorrect 50 ms 9296 KB Output isn't correct
98 Correct 44 ms 7500 KB Output is correct
99 Incorrect 35 ms 10728 KB Output isn't correct
100 Incorrect 55 ms 10284 KB Output isn't correct
101 Incorrect 80 ms 8516 KB Output isn't correct
102 Correct 52 ms 8576 KB Output is correct