Submission #940411

# Submission time Handle Problem Language Result Execution time Memory
940411 2024-03-07T09:00:33 Z vjudge1 Art Class (IOI13_artclass) C++17
9 / 100
74 ms 10744 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 ok=5;
    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++;
        }
      }
    }
    if(cnt<h*w*1.0/15)ok=0;
    // 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){
            ok--;
          }
        }
      }
    }
    if(ok>0)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 Incorrect 56 ms 10460 KB Output isn't correct
2 Correct 23 ms 7256 KB Output is correct
3 Incorrect 41 ms 8812 KB Output isn't correct
4 Incorrect 51 ms 9932 KB Output isn't correct
5 Correct 59 ms 10744 KB Output is correct
6 Correct 47 ms 10204 KB Output is correct
7 Incorrect 42 ms 10456 KB Output isn't correct
8 Correct 39 ms 10440 KB Output is correct
9 Incorrect 55 ms 9080 KB Output isn't correct
10 Incorrect 58 ms 8912 KB Output isn't correct
11 Incorrect 48 ms 9160 KB Output isn't correct
12 Incorrect 45 ms 10444 KB Output isn't correct
13 Correct 51 ms 8912 KB Output is correct
14 Correct 45 ms 10576 KB Output is correct
15 Correct 49 ms 10460 KB Output is correct
16 Correct 35 ms 9420 KB Output is correct
17 Correct 33 ms 8672 KB Output is correct
18 Correct 56 ms 9084 KB Output is correct
19 Incorrect 64 ms 10180 KB Output isn't correct
20 Incorrect 39 ms 10460 KB Output isn't correct
21 Incorrect 45 ms 10440 KB Output isn't correct
22 Correct 59 ms 8916 KB Output is correct
23 Correct 49 ms 8672 KB Output is correct
24 Incorrect 26 ms 9428 KB Output isn't correct
25 Correct 35 ms 7908 KB Output is correct
26 Incorrect 50 ms 10440 KB Output isn't correct
27 Correct 12 ms 7004 KB Output is correct
28 Incorrect 48 ms 9180 KB Output isn't correct
29 Correct 31 ms 7512 KB Output is correct
30 Correct 74 ms 10184 KB Output is correct
31 Incorrect 46 ms 10200 KB Output isn't correct
32 Correct 31 ms 9428 KB Output is correct
33 Incorrect 51 ms 8932 KB Output isn't correct
34 Incorrect 39 ms 9188 KB Output isn't correct
35 Incorrect 43 ms 9444 KB Output isn't correct
36 Correct 62 ms 8908 KB Output is correct
37 Incorrect 49 ms 10456 KB Output isn't correct
38 Incorrect 43 ms 10184 KB Output isn't correct
39 Incorrect 52 ms 10184 KB Output isn't correct
40 Correct 54 ms 9456 KB Output is correct
41 Correct 48 ms 10224 KB Output is correct
42 Incorrect 11 ms 8284 KB Output isn't correct
43 Incorrect 43 ms 10456 KB Output isn't correct
44 Incorrect 52 ms 10456 KB Output isn't correct
45 Incorrect 44 ms 10440 KB Output isn't correct
46 Correct 47 ms 10600 KB Output is correct
47 Incorrect 42 ms 9452 KB Output isn't correct
48 Incorrect 39 ms 9168 KB Output isn't correct
49 Correct 42 ms 9420 KB Output is correct
50 Incorrect 43 ms 10208 KB Output isn't correct
51 Correct 51 ms 8912 KB Output is correct
52 Incorrect 47 ms 9184 KB Output isn't correct
53 Incorrect 48 ms 10184 KB Output isn't correct
54 Correct 43 ms 10436 KB Output is correct
55 Correct 48 ms 8528 KB Output is correct
56 Correct 59 ms 8564 KB Output is correct
57 Incorrect 42 ms 10180 KB Output isn't correct
58 Correct 53 ms 8908 KB Output is correct
59 Incorrect 41 ms 8664 KB Output isn't correct
60 Correct 46 ms 9952 KB Output is correct
61 Correct 40 ms 9928 KB Output is correct
62 Incorrect 45 ms 9168 KB Output isn't correct
63 Incorrect 49 ms 10440 KB Output isn't correct
64 Incorrect 44 ms 9676 KB Output isn't correct
65 Incorrect 38 ms 10692 KB Output isn't correct
66 Correct 30 ms 8404 KB Output is correct
67 Incorrect 49 ms 10440 KB Output isn't correct
68 Incorrect 29 ms 9172 KB Output isn't correct
69 Incorrect 39 ms 10436 KB Output isn't correct
70 Correct 56 ms 9580 KB Output is correct
71 Incorrect 43 ms 8928 KB Output isn't correct
72 Correct 41 ms 8480 KB Output is correct
73 Correct 51 ms 8016 KB Output is correct
74 Correct 51 ms 8912 KB Output is correct
75 Incorrect 58 ms 10452 KB Output isn't correct
76 Correct 43 ms 8904 KB Output is correct
77 Correct 24 ms 7512 KB Output is correct
78 Correct 47 ms 10440 KB Output is correct
79 Correct 44 ms 10440 KB Output is correct
80 Incorrect 48 ms 10440 KB Output isn't correct
81 Correct 40 ms 8648 KB Output is correct
82 Incorrect 46 ms 10184 KB Output isn't correct
83 Correct 42 ms 10456 KB Output is correct
84 Incorrect 53 ms 9416 KB Output isn't correct
85 Correct 35 ms 10440 KB Output is correct
86 Correct 52 ms 8536 KB Output is correct
87 Correct 45 ms 9160 KB Output is correct
88 Correct 28 ms 7796 KB Output is correct
89 Incorrect 41 ms 10456 KB Output isn't correct
90 Correct 37 ms 9684 KB Output is correct
91 Correct 41 ms 9420 KB Output is correct
92 Correct 47 ms 10456 KB Output is correct
93 Incorrect 64 ms 10204 KB Output isn't correct
94 Incorrect 29 ms 8660 KB Output isn't correct
95 Correct 41 ms 8928 KB Output is correct
96 Incorrect 35 ms 8924 KB Output isn't correct
97 Incorrect 46 ms 10184 KB Output isn't correct
98 Incorrect 42 ms 10436 KB Output isn't correct
99 Incorrect 40 ms 8904 KB Output isn't correct
100 Incorrect 55 ms 10440 KB Output isn't correct
101 Correct 47 ms 10440 KB Output is correct
102 Incorrect 47 ms 10436 KB Output isn't correct