Submission #651734

# Submission time Handle Problem Language Result Execution time Memory
651734 2022-10-19T22:46:14 Z Lawliet Art Class (IOI13_artclass) C++17
25 / 100
94 ms 22160 KB
#include "artclass.h"
#include <bits/stdc++.h>
// #include <iostream>
// #include <vector>
 
using namespace std;
 
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 = 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){
        for(int i = 0 ; i < l ; i++)
        {
            for(int j = 0 ; j < c ; j++)
            {
                int sum = R[i][j] + G[i][j] + B[i][j];
                if( sum < 120 )
                    return 1;
            }
        }
        return 4;
   }
  
  
   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;*/
  
}
 
// int r[500][500], g[500][500], b[500][500];
 
// int main()
// {
//    int n, m;
//    cin >> n >> m;
 
//    for(int i = 0 ; i < n ; i++)
//        for(int j = 0 ; j < m ; j++)
//            cin >> r[i][j] >> g[i][j] >> b[i][j];
 
//    cout << style(n, m, r, g, b) << endl;
// }

Compilation message

artclass.cpp: In function 'int style(int, int, int (*)[500], int (*)[500], int (*)[500])':
artclass.cpp:135:8: warning: unused variable 'qtd_comp' [-Wunused-variable]
  135 |    int qtd_comp = aux.second;
      |        ^~~~~~~~
artclass.cpp:151:8: warning: unused variable 'qtd_green' [-Wunused-variable]
  151 |    int qtd_green = do_green_image();
      |        ^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 55 ms 7500 KB Output is correct
2 Incorrect 61 ms 13644 KB Output isn't correct
3 Correct 47 ms 7544 KB Output is correct
4 Correct 30 ms 5576 KB Output is correct
5 Incorrect 51 ms 7220 KB Output isn't correct
6 Correct 47 ms 10544 KB Output is correct
7 Correct 28 ms 5696 KB Output is correct
8 Incorrect 52 ms 7836 KB Output isn't correct
9 Correct 43 ms 6572 KB Output is correct
10 Correct 37 ms 6308 KB Output is correct
11 Incorrect 43 ms 6876 KB Output isn't correct
12 Correct 51 ms 6688 KB Output is correct
13 Correct 50 ms 6884 KB Output is correct
14 Correct 54 ms 10956 KB Output is correct
15 Correct 55 ms 8600 KB Output is correct
16 Correct 42 ms 7500 KB Output is correct
17 Correct 49 ms 11852 KB Output is correct
18 Correct 48 ms 6772 KB Output is correct
19 Incorrect 46 ms 13928 KB Output isn't correct
20 Incorrect 64 ms 12092 KB Output isn't correct
21 Incorrect 60 ms 21500 KB Output isn't correct
22 Incorrect 50 ms 7024 KB Output isn't correct
23 Correct 47 ms 7568 KB Output is correct
24 Correct 45 ms 8396 KB Output is correct
25 Incorrect 44 ms 13824 KB Output isn't correct
26 Correct 43 ms 8588 KB Output is correct
27 Incorrect 83 ms 18320 KB Output isn't correct
28 Incorrect 61 ms 7620 KB Output isn't correct
29 Incorrect 48 ms 7248 KB Output isn't correct
30 Correct 37 ms 6368 KB Output is correct
31 Incorrect 48 ms 11892 KB Output isn't correct
32 Correct 47 ms 7444 KB Output is correct
33 Incorrect 55 ms 11868 KB Output isn't correct
34 Incorrect 54 ms 8012 KB Output isn't correct
35 Correct 50 ms 11928 KB Output is correct
36 Correct 47 ms 7356 KB Output is correct
37 Incorrect 66 ms 11596 KB Output isn't correct
38 Incorrect 51 ms 7196 KB Output isn't correct
39 Incorrect 61 ms 16544 KB Output isn't correct
40 Incorrect 51 ms 7112 KB Output isn't correct
41 Correct 60 ms 14680 KB Output is correct
42 Correct 48 ms 6860 KB Output is correct
43 Correct 30 ms 5988 KB Output is correct
44 Incorrect 57 ms 8116 KB Output isn't correct
45 Correct 48 ms 8128 KB Output is correct
46 Correct 53 ms 11724 KB Output is correct
47 Correct 36 ms 7548 KB Output is correct
48 Incorrect 67 ms 19884 KB Output isn't correct
49 Correct 13 ms 4948 KB Output is correct
50 Incorrect 56 ms 7572 KB Output isn't correct
51 Correct 54 ms 13932 KB Output is correct
52 Correct 94 ms 11852 KB Output is correct
53 Incorrect 46 ms 11468 KB Output isn't correct
54 Correct 31 ms 5984 KB Output is correct
55 Incorrect 52 ms 7348 KB Output isn't correct
56 Incorrect 52 ms 11016 KB Output isn't correct
57 Correct 48 ms 6768 KB Output is correct
58 Correct 51 ms 7500 KB Output is correct
59 Correct 54 ms 10132 KB Output is correct
60 Correct 49 ms 8300 KB Output is correct
61 Correct 56 ms 11016 KB Output is correct
62 Incorrect 23 ms 9304 KB Output isn't correct
63 Incorrect 37 ms 10864 KB Output isn't correct
64 Correct 57 ms 9532 KB Output is correct
65 Correct 52 ms 7124 KB Output is correct
66 Correct 26 ms 5556 KB Output is correct
67 Incorrect 61 ms 18168 KB Output isn't correct
68 Incorrect 45 ms 6988 KB Output isn't correct
69 Correct 48 ms 7652 KB Output is correct
70 Correct 53 ms 8508 KB Output is correct
71 Correct 47 ms 9116 KB Output is correct
72 Correct 60 ms 10476 KB Output is correct
73 Correct 50 ms 6988 KB Output is correct
74 Correct 55 ms 7448 KB Output is correct
75 Correct 45 ms 7452 KB Output is correct
76 Incorrect 57 ms 8268 KB Output isn't correct
77 Incorrect 53 ms 15052 KB Output isn't correct
78 Incorrect 68 ms 9092 KB Output isn't correct
79 Correct 35 ms 6296 KB Output is correct
80 Incorrect 30 ms 9764 KB Output isn't correct
81 Correct 30 ms 6988 KB Output is correct
82 Incorrect 55 ms 17872 KB Output isn't correct
83 Incorrect 43 ms 6884 KB Output isn't correct
84 Correct 45 ms 7284 KB Output is correct
85 Incorrect 54 ms 7884 KB Output isn't correct
86 Incorrect 44 ms 8428 KB Output isn't correct
87 Correct 87 ms 11472 KB Output is correct
88 Incorrect 55 ms 14300 KB Output isn't correct
89 Incorrect 47 ms 10976 KB Output isn't correct
90 Correct 34 ms 9616 KB Output is correct
91 Correct 53 ms 8908 KB Output is correct
92 Correct 57 ms 11944 KB Output is correct
93 Correct 49 ms 8652 KB Output is correct
94 Correct 29 ms 5980 KB Output is correct
95 Incorrect 73 ms 14848 KB Output isn't correct
96 Incorrect 54 ms 8928 KB Output isn't correct
97 Incorrect 59 ms 12404 KB Output isn't correct
98 Incorrect 62 ms 22160 KB Output isn't correct
99 Correct 51 ms 10240 KB Output is correct
100 Incorrect 59 ms 11384 KB Output isn't correct
101 Correct 33 ms 8068 KB Output is correct
102 Correct 62 ms 11296 KB Output is correct