Submission #940449

# Submission time Handle Problem Language Result Execution time Memory
940449 2024-03-07T09:27:58 Z shenfe1 Art Class (IOI13_artclass) C++17
0 / 100
73 ms 10712 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=40;
  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;
  return -1;
  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 55 ms 8912 KB Output is correct
2 Incorrect 29 ms 8928 KB Output isn't correct
3 Incorrect 46 ms 10564 KB Output isn't correct
4 Incorrect 45 ms 9420 KB Output isn't correct
5 Incorrect 33 ms 8916 KB Output isn't correct
6 Incorrect 55 ms 9428 KB Output isn't correct
7 Correct 45 ms 8912 KB Output is correct
8 Incorrect 38 ms 9176 KB Output isn't correct
9 Correct 43 ms 8560 KB Output is correct
10 Incorrect 43 ms 9188 KB Output isn't correct
11 Incorrect 34 ms 10704 KB Output isn't correct
12 Incorrect 36 ms 10704 KB Output isn't correct
13 Incorrect 35 ms 8912 KB Output isn't correct
14 Incorrect 46 ms 10200 KB Output isn't correct
15 Incorrect 11 ms 7000 KB Output isn't correct
16 Incorrect 50 ms 8920 KB Output isn't correct
17 Correct 47 ms 8908 KB Output is correct
18 Incorrect 58 ms 10456 KB Output isn't correct
19 Incorrect 44 ms 8916 KB Output isn't correct
20 Incorrect 52 ms 10452 KB Output isn't correct
21 Correct 29 ms 9420 KB Output is correct
22 Incorrect 44 ms 10112 KB Output isn't correct
23 Incorrect 53 ms 8016 KB Output isn't correct
24 Correct 42 ms 10620 KB Output is correct
25 Incorrect 40 ms 9420 KB Output isn't correct
26 Incorrect 24 ms 9672 KB Output isn't correct
27 Incorrect 31 ms 10440 KB Output isn't correct
28 Incorrect 56 ms 9420 KB Output isn't correct
29 Incorrect 44 ms 10472 KB Output isn't correct
30 Incorrect 25 ms 8400 KB Output isn't correct
31 Incorrect 47 ms 10704 KB Output isn't correct
32 Incorrect 48 ms 10192 KB Output isn't correct
33 Correct 49 ms 9124 KB Output is correct
34 Incorrect 43 ms 9148 KB Output isn't correct
35 Incorrect 47 ms 8920 KB Output isn't correct
36 Incorrect 38 ms 8656 KB Output isn't correct
37 Incorrect 36 ms 7856 KB Output isn't correct
38 Incorrect 52 ms 10204 KB Output isn't correct
39 Incorrect 45 ms 10184 KB Output isn't correct
40 Correct 49 ms 8908 KB Output is correct
41 Incorrect 52 ms 10180 KB Output isn't correct
42 Incorrect 39 ms 9420 KB Output isn't correct
43 Incorrect 46 ms 10180 KB Output isn't correct
44 Incorrect 11 ms 8280 KB Output isn't correct
45 Incorrect 49 ms 8928 KB Output isn't correct
46 Incorrect 35 ms 9416 KB Output isn't correct
47 Incorrect 35 ms 10704 KB Output isn't correct
48 Incorrect 28 ms 8660 KB Output isn't correct
49 Incorrect 42 ms 10704 KB Output isn't correct
50 Incorrect 42 ms 10416 KB Output isn't correct
51 Incorrect 40 ms 10704 KB Output isn't correct
52 Correct 53 ms 10460 KB Output is correct
53 Incorrect 36 ms 8660 KB Output isn't correct
54 Incorrect 46 ms 10704 KB Output isn't correct
55 Incorrect 31 ms 8664 KB Output isn't correct
56 Incorrect 43 ms 10204 KB Output isn't correct
57 Incorrect 41 ms 10180 KB Output isn't correct
58 Correct 50 ms 8560 KB Output is correct
59 Incorrect 45 ms 10436 KB Output isn't correct
60 Incorrect 59 ms 10492 KB Output isn't correct
61 Incorrect 57 ms 9440 KB Output isn't correct
62 Incorrect 49 ms 10440 KB Output isn't correct
63 Incorrect 57 ms 9164 KB Output isn't correct
64 Incorrect 57 ms 10692 KB Output isn't correct
65 Incorrect 38 ms 10188 KB Output isn't correct
66 Incorrect 41 ms 8796 KB Output isn't correct
67 Incorrect 47 ms 10440 KB Output isn't correct
68 Correct 50 ms 9092 KB Output is correct
69 Incorrect 40 ms 9940 KB Output isn't correct
70 Incorrect 41 ms 8928 KB Output isn't correct
71 Incorrect 42 ms 10460 KB Output isn't correct
72 Incorrect 39 ms 9184 KB Output isn't correct
73 Correct 37 ms 10440 KB Output is correct
74 Incorrect 30 ms 8648 KB Output isn't correct
75 Correct 42 ms 9192 KB Output is correct
76 Correct 28 ms 7724 KB Output is correct
77 Incorrect 47 ms 10692 KB Output isn't correct
78 Incorrect 48 ms 10500 KB Output isn't correct
79 Incorrect 45 ms 10700 KB Output isn't correct
80 Incorrect 40 ms 10712 KB Output isn't correct
81 Correct 47 ms 10456 KB Output is correct
82 Incorrect 41 ms 8904 KB Output isn't correct
83 Incorrect 44 ms 10192 KB Output isn't correct
84 Incorrect 47 ms 10636 KB Output isn't correct
85 Incorrect 41 ms 10440 KB Output isn't correct
86 Incorrect 35 ms 9416 KB Output isn't correct
87 Incorrect 23 ms 7516 KB Output isn't correct
88 Incorrect 40 ms 9680 KB Output isn't correct
89 Incorrect 69 ms 10440 KB Output isn't correct
90 Incorrect 68 ms 10184 KB Output isn't correct
91 Incorrect 53 ms 10436 KB Output isn't correct
92 Incorrect 23 ms 7260 KB Output isn't correct
93 Incorrect 60 ms 8912 KB Output isn't correct
94 Incorrect 28 ms 7516 KB Output isn't correct
95 Correct 50 ms 9416 KB Output is correct
96 Incorrect 40 ms 8652 KB Output isn't correct
97 Incorrect 47 ms 10200 KB Output isn't correct
98 Correct 33 ms 10456 KB Output is correct
99 Correct 57 ms 9640 KB Output is correct
100 Incorrect 43 ms 10456 KB Output isn't correct
101 Correct 73 ms 8528 KB Output is correct
102 Incorrect 44 ms 10184 KB Output isn't correct