Submission #651742

# Submission time Handle Problem Language Result Execution time Memory
651742 2022-10-19T23:18:39 Z LucaGreg Art Class (IOI13_artclass) C++17
21 / 100
85 ms 26956 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+6>red && green+6>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;
   memset(marc, 0, sizeof(marc));
  int mx = 0;
  for(int i=0;i<l;i++){
      for(int j=0;j<c;j++){
          if(marc[i][j] == 0){
               mx = max(mx, find_comp(i,j));
           //    int sz_comp = find_comp(i, j);
           //    qtd_comp_++;
           //    if(sz_comp>min_sz_comp) qtd_bigcomp_++;
          }
      }
  }
 
  return mx;
}
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)/22);
  min_bigcomp = 1;
  min_bigcomp_group14 = 6;
  //min_qtd_green = ((l*c)/4);
  min_dif = 5;
  min_colors_sum = 350;
  //min_qtd_greencomp = 8;
  min_sz_greencomp = ((l*c)/10);
  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;
 
//    cout << qtd_bigcomp << endl;
  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 < 80 )
                   return 1;
           }
       }
       return 4;
  }
    min_dif=50;
   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:7: 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 59 ms 19476 KB Output is correct
2 Correct 38 ms 13140 KB Output is correct
3 Incorrect 67 ms 17804 KB Output isn't correct
4 Incorrect 28 ms 6220 KB Output isn't correct
5 Correct 60 ms 10976 KB Output is correct
6 Incorrect 36 ms 7652 KB Output isn't correct
7 Correct 58 ms 11788 KB Output is correct
8 Correct 36 ms 6988 KB Output is correct
9 Incorrect 53 ms 14128 KB Output isn't correct
10 Correct 36 ms 10680 KB Output is correct
11 Correct 35 ms 9540 KB Output is correct
12 Incorrect 51 ms 14884 KB Output isn't correct
13 Correct 59 ms 21184 KB Output is correct
14 Incorrect 71 ms 14604 KB Output isn't correct
15 Incorrect 50 ms 14884 KB Output isn't correct
16 Correct 65 ms 19328 KB Output is correct
17 Correct 55 ms 7976 KB Output is correct
18 Correct 43 ms 10236 KB Output is correct
19 Incorrect 34 ms 9252 KB Output isn't correct
20 Correct 85 ms 20964 KB Output is correct
21 Correct 52 ms 9164 KB Output is correct
22 Incorrect 44 ms 11464 KB Output isn't correct
23 Incorrect 72 ms 16212 KB Output isn't correct
24 Incorrect 35 ms 7476 KB Output isn't correct
25 Incorrect 76 ms 25788 KB Output isn't correct
26 Incorrect 62 ms 15024 KB Output isn't correct
27 Incorrect 35 ms 8792 KB Output isn't correct
28 Correct 53 ms 8148 KB Output is correct
29 Correct 62 ms 12180 KB Output is correct
30 Correct 58 ms 19888 KB Output is correct
31 Incorrect 45 ms 10532 KB Output isn't correct
32 Incorrect 62 ms 11596 KB Output isn't correct
33 Correct 65 ms 10480 KB Output is correct
34 Correct 54 ms 17484 KB Output is correct
35 Correct 63 ms 11500 KB Output is correct
36 Correct 30 ms 9816 KB Output is correct
37 Correct 61 ms 8504 KB Output is correct
38 Correct 57 ms 19620 KB Output is correct
39 Incorrect 67 ms 19660 KB Output isn't correct
40 Incorrect 45 ms 13788 KB Output isn't correct
41 Incorrect 60 ms 23676 KB Output isn't correct
42 Correct 56 ms 21756 KB Output is correct
43 Incorrect 57 ms 13384 KB Output isn't correct
44 Correct 55 ms 17952 KB Output is correct
45 Correct 56 ms 17468 KB Output is correct
46 Incorrect 50 ms 12084 KB Output isn't correct
47 Incorrect 50 ms 7460 KB Output isn't correct
48 Incorrect 55 ms 15236 KB Output isn't correct
49 Correct 48 ms 14588 KB Output is correct
50 Incorrect 55 ms 14896 KB Output isn't correct
51 Incorrect 64 ms 17116 KB Output isn't correct
52 Correct 64 ms 22168 KB Output is correct
53 Incorrect 46 ms 18636 KB Output isn't correct
54 Incorrect 71 ms 18764 KB Output isn't correct
55 Correct 56 ms 11000 KB Output is correct
56 Incorrect 42 ms 6660 KB Output isn't correct
57 Incorrect 15 ms 6868 KB Output isn't correct
58 Correct 40 ms 14536 KB Output is correct
59 Correct 63 ms 21452 KB Output is correct
60 Incorrect 44 ms 11812 KB Output isn't correct
61 Incorrect 46 ms 13676 KB Output isn't correct
62 Correct 61 ms 18588 KB Output is correct
63 Correct 53 ms 10464 KB Output is correct
64 Correct 41 ms 13644 KB Output is correct
65 Correct 76 ms 14784 KB Output is correct
66 Correct 62 ms 11212 KB Output is correct
67 Incorrect 59 ms 16660 KB Output isn't correct
68 Correct 57 ms 21756 KB Output is correct
69 Correct 63 ms 20092 KB Output is correct
70 Correct 43 ms 11928 KB Output is correct
71 Correct 53 ms 14024 KB Output is correct
72 Correct 76 ms 21836 KB Output is correct
73 Incorrect 15 ms 9204 KB Output isn't correct
74 Incorrect 69 ms 14200 KB Output isn't correct
75 Correct 52 ms 20244 KB Output is correct
76 Correct 59 ms 9540 KB Output is correct
77 Correct 45 ms 6412 KB Output is correct
78 Incorrect 45 ms 12964 KB Output isn't correct
79 Correct 55 ms 16200 KB Output is correct
80 Correct 64 ms 19788 KB Output is correct
81 Incorrect 48 ms 10964 KB Output isn't correct
82 Correct 65 ms 11036 KB Output is correct
83 Incorrect 49 ms 10440 KB Output isn't correct
84 Correct 77 ms 19844 KB Output is correct
85 Correct 75 ms 21100 KB Output is correct
86 Correct 48 ms 8168 KB Output is correct
87 Incorrect 53 ms 13620 KB Output isn't correct
88 Incorrect 47 ms 7916 KB Output isn't correct
89 Correct 56 ms 20556 KB Output is correct
90 Correct 72 ms 22124 KB Output is correct
91 Incorrect 76 ms 26956 KB Output isn't correct
92 Correct 52 ms 8268 KB Output is correct
93 Correct 81 ms 11360 KB Output is correct
94 Correct 72 ms 21404 KB Output is correct
95 Correct 58 ms 20908 KB Output is correct
96 Incorrect 44 ms 11216 KB Output isn't correct
97 Incorrect 37 ms 9752 KB Output isn't correct
98 Incorrect 68 ms 14052 KB Output isn't correct
99 Incorrect 57 ms 23116 KB Output isn't correct
100 Incorrect 41 ms 10940 KB Output isn't correct
101 Correct 59 ms 19852 KB Output is correct
102 Incorrect 56 ms 11916 KB Output isn't correct