Submission #940543

# Submission time Handle Problem Language Result Execution time Memory
940543 2024-03-07T10:24:38 Z shenfe1 Art Class (IOI13_artclass) C++17
2 / 100
75 ms 13216 KB
#include <bits/stdc++.h>
 
#pragma optimize("Ofast")
#pragma target("avx2")
 
using namespace std;
 
#define ll long long
#define ld long double
#define pb push_back
#define pf push_front
#define pii pair<int,int>
#define all(v) v.begin(),v.end()
#define F first
#define S second
#define mem(a,i) memset(a,i,sizeof(a))
#define sz(s) (int)s.size()
#define y1 yy
#define ppb pop_back
#define lb lower_bound
#define ub upper_bound
#define gcd(a,b) __gcd(a,b)
#define in insert
// #define int ll
 
const int MAX=500+15;
const ll inf=1e9;  
const int mod=1e9+7;
const int mod1=1e9+9;
const ld eps=1e-9;
 
int dx[8]={1,0,-1,0,1,-1,-1,1};
int dy[8]={0,1,0,-1,1,-1,1,-1};
 
int binpow(int a,int n){
  if(!n)return 1;
  if(n%2==1)return a*binpow(a,n-1);
  int k=binpow(a,n/2);
  return k*k;
}
 
#include "artclass.h"
 
int r[MAX][MAX],g[MAX][MAX],b[MAX][MAX];
int isBorder[MAX][MAX];
int h,w;
vector<pii> vec;
int use[MAX][MAX];
 
bool good(int i,int j){
  return (0<=i&&i<h&&0<=j&&j<w);
}
 
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
  h=H;
  w=W;
  int C1=30;
  for(int i=0;i<h;i++)for(int j=0;j<w;j++){
    r[i][j]=R[i][j];
    g[i][j]=G[i][j];
    b[i][j]=B[i][j];
  }
  {
    int god=0,bad=0;
    int cnt=0;
    for(int i=0;i<h;i++){
      for(int j=0;j<w;j++){
        if(abs(max({R[i][j],G[i][j],B[i][j]})-min({R[i][j],G[i][j],B[i][j]}))<=C1&&max({R[i][j],G[i][j],B[i][j]})<=128){
          isBorder[i][j]=1;
          cnt++;
        }
      }
    }
    // cout<<cnt<<"\n";
    for(int i=0;i<h;i++){
      for(int j=0;j<w;j++){
        if(!isBorder[i][j]&&!use[i][j]){
          vec.clear();
          queue<pii> q;
          q.push({i,j});
          use[i][j]=1;
          while(!q.empty()){
            int x=q.front().F,y=q.front().S;
            vec.pb({x,y});
            q.pop();
            use[x][y]=1;
            for(int k=0;k<8;k++){
              int nx=x+dx[k];
              int ny=y+dy[k];
              if(good(nx,ny)&&!isBorder[nx][ny]&&!use[nx][ny]){
                use[nx][ny]=1;
                q.push({nx,ny});
              }
            }
          }
          // return -1;
          ld mr=0,mb=0,mg=0;          
          for(auto x:vec){
            mr+=R[x.F][x.S];
            mb+=B[x.F][x.S];
            mg+=G[x.F][x.S];
          }
          if(vec.empty())continue;
          mr/=sz(vec);
          mb/=sz(vec);
          mg/=sz(vec);
          int cnt=0;
          for(auto x:vec){
            if(abs(R[x.F][x.S]-mr)<=C1*2&&abs(G[x.F][x.S]-mg)<=C1*2&&abs(B[x.F][x.S]-mb)<=C1*2)cnt++;
          }
          if(cnt<sz(vec)*9.0/10){
            bad++;
          }
          else god++;
        }
      }
    }
    if(god*1.0/(god+bad)>=0.9)return 1;
  }
  bool is4=1;
  int C=50;
  for(int i=0;i<H;i++){
    int cnt=0;
    ld mr=0,mb=0,mg=0;
    for(int j=0;j<W;j++){
      mr+=R[i][j];
      mb+=B[i][j];
      mg+=G[i][j];
    }
    mr/=W;
    mb/=W;
    mg/=W;
    for(int j=0;j<W;j++){
      if(abs(R[i][j]-mr)<=C&&abs(G[i][j]-mg)<=C&&abs(B[i][j]-mb)<=C)cnt++;
    }
    if(cnt<W*9.0/10){
      is4=0;
    }
  }
  if(is4==1)return 4;
  int cnt=0;
  for(int i=0;i<H;i++){
    for(int j=0;j<W;j++){
      if(G[i][j]>=R[i][j]&&G[i][j]>=200&&B[i][j]<=100){
        cnt++;
      }
      if(R[i][j]>=200&&G[i][j]>=100&&G[i][j]<=200&&B[i][j]<=150){
        cnt++;
      }
    }
  }
  if(cnt>=H*W*8.5/10){
    return 2;
  }
  return 3;
}

Compilation message

artclass.cpp:3: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    3 | #pragma optimize("Ofast")
      | 
artclass.cpp:4: warning: ignoring '#pragma target ' [-Wunknown-pragmas]
    4 | #pragma target("avx2")
      |
# Verdict Execution time Memory Grader output
1 Correct 61 ms 11092 KB Output is correct
2 Incorrect 53 ms 12748 KB Output isn't correct
3 Incorrect 44 ms 11980 KB Output isn't correct
4 Incorrect 52 ms 12492 KB Output isn't correct
5 Correct 44 ms 11340 KB Output is correct
6 Incorrect 40 ms 10960 KB Output isn't correct
7 Incorrect 45 ms 12216 KB Output isn't correct
8 Incorrect 48 ms 12284 KB Output isn't correct
9 Correct 47 ms 10588 KB Output is correct
10 Correct 49 ms 12740 KB Output is correct
11 Incorrect 44 ms 12480 KB Output isn't correct
12 Correct 53 ms 13108 KB Output is correct
13 Correct 58 ms 10952 KB Output is correct
14 Incorrect 48 ms 10976 KB Output isn't correct
15 Incorrect 39 ms 11968 KB Output isn't correct
16 Correct 34 ms 10964 KB Output is correct
17 Incorrect 47 ms 12744 KB Output isn't correct
18 Correct 63 ms 12492 KB Output is correct
19 Incorrect 44 ms 9812 KB Output isn't correct
20 Correct 58 ms 13076 KB Output is correct
21 Incorrect 51 ms 12328 KB Output isn't correct
22 Incorrect 47 ms 11468 KB Output isn't correct
23 Incorrect 48 ms 12860 KB Output isn't correct
24 Correct 63 ms 11200 KB Output is correct
25 Correct 50 ms 12740 KB Output is correct
26 Incorrect 31 ms 10328 KB Output isn't correct
27 Incorrect 44 ms 10956 KB Output isn't correct
28 Incorrect 63 ms 13000 KB Output isn't correct
29 Correct 48 ms 10564 KB Output is correct
30 Correct 32 ms 9932 KB Output is correct
31 Incorrect 42 ms 11652 KB Output isn't correct
32 Incorrect 54 ms 12452 KB Output isn't correct
33 Correct 63 ms 12196 KB Output is correct
34 Incorrect 43 ms 10960 KB Output isn't correct
35 Incorrect 52 ms 11468 KB Output isn't correct
36 Incorrect 39 ms 12108 KB Output isn't correct
37 Incorrect 46 ms 12744 KB Output isn't correct
38 Correct 45 ms 11260 KB Output is correct
39 Incorrect 64 ms 11472 KB Output isn't correct
40 Incorrect 44 ms 11716 KB Output isn't correct
41 Incorrect 30 ms 9832 KB Output isn't correct
42 Incorrect 73 ms 12732 KB Output isn't correct
43 Incorrect 46 ms 11080 KB Output isn't correct
44 Incorrect 47 ms 11324 KB Output isn't correct
45 Incorrect 52 ms 12912 KB Output isn't correct
46 Incorrect 44 ms 10960 KB Output isn't correct
47 Incorrect 60 ms 11936 KB Output isn't correct
48 Incorrect 70 ms 11432 KB Output isn't correct
49 Incorrect 13 ms 7512 KB Output isn't correct
50 Correct 40 ms 12232 KB Output is correct
51 Incorrect 58 ms 13216 KB Output isn't correct
52 Incorrect 58 ms 11976 KB Output isn't correct
53 Incorrect 45 ms 12604 KB Output isn't correct
54 Incorrect 45 ms 12488 KB Output isn't correct
55 Incorrect 42 ms 11836 KB Output isn't correct
56 Correct 30 ms 8796 KB Output is correct
57 Incorrect 35 ms 10952 KB Output isn't correct
58 Correct 49 ms 12240 KB Output is correct
59 Correct 43 ms 11464 KB Output is correct
60 Correct 49 ms 11216 KB Output is correct
61 Correct 25 ms 8532 KB Output is correct
62 Correct 63 ms 11976 KB Output is correct
63 Incorrect 57 ms 12292 KB Output isn't correct
64 Incorrect 57 ms 12732 KB Output isn't correct
65 Incorrect 26 ms 9448 KB Output isn't correct
66 Incorrect 47 ms 12628 KB Output isn't correct
67 Incorrect 43 ms 10964 KB Output isn't correct
68 Incorrect 45 ms 10880 KB Output isn't correct
69 Incorrect 49 ms 12268 KB Output isn't correct
70 Incorrect 47 ms 12140 KB Output isn't correct
71 Incorrect 49 ms 12476 KB Output isn't correct
72 Correct 39 ms 10184 KB Output is correct
73 Correct 56 ms 12228 KB Output is correct
74 Correct 33 ms 9932 KB Output is correct
75 Correct 34 ms 11976 KB Output is correct
76 Incorrect 41 ms 10444 KB Output isn't correct
77 Incorrect 56 ms 11648 KB Output isn't correct
78 Incorrect 43 ms 11968 KB Output isn't correct
79 Correct 42 ms 9032 KB Output is correct
80 Incorrect 36 ms 9560 KB Output isn't correct
81 Incorrect 68 ms 12924 KB Output isn't correct
82 Incorrect 36 ms 10392 KB Output isn't correct
83 Correct 55 ms 11216 KB Output is correct
84 Incorrect 58 ms 11208 KB Output isn't correct
85 Incorrect 47 ms 12436 KB Output isn't correct
86 Incorrect 51 ms 12224 KB Output isn't correct
87 Incorrect 41 ms 12496 KB Output isn't correct
88 Correct 42 ms 12344 KB Output is correct
89 Incorrect 48 ms 12868 KB Output isn't correct
90 Incorrect 41 ms 10556 KB Output isn't correct
91 Incorrect 53 ms 10952 KB Output isn't correct
92 Incorrect 52 ms 10440 KB Output isn't correct
93 Incorrect 27 ms 10696 KB Output isn't correct
94 Correct 75 ms 11356 KB Output is correct
95 Correct 33 ms 8412 KB Output is correct
96 Incorrect 13 ms 9052 KB Output isn't correct
97 Incorrect 49 ms 11208 KB Output isn't correct
98 Incorrect 45 ms 12736 KB Output isn't correct
99 Incorrect 49 ms 12752 KB Output isn't correct
100 Incorrect 48 ms 12360 KB Output isn't correct
101 Correct 51 ms 11288 KB Output is correct
102 Incorrect 46 ms 12744 KB Output isn't correct