답안 #940396

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
940396 2024-03-07T08:51:39 Z shenfe1 미술 수업 (IOI13_artclass) C++17
9 / 100
63 ms 13504 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&&B[i][j]<=150){
        cnt++;
      }
    }
  }
  if(cnt>=H*W*8.0/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")
      |
# 결과 실행 시간 메모리 Grader output
1 Incorrect 46 ms 10968 KB Output isn't correct
2 Incorrect 47 ms 12604 KB Output isn't correct
3 Incorrect 31 ms 10824 KB Output isn't correct
4 Correct 53 ms 11728 KB Output is correct
5 Incorrect 54 ms 11724 KB Output isn't correct
6 Incorrect 39 ms 10956 KB Output isn't correct
7 Incorrect 35 ms 10324 KB Output isn't correct
8 Incorrect 40 ms 10956 KB Output isn't correct
9 Incorrect 40 ms 12232 KB Output isn't correct
10 Incorrect 49 ms 12736 KB Output isn't correct
11 Incorrect 50 ms 12740 KB Output isn't correct
12 Correct 46 ms 12260 KB Output is correct
13 Incorrect 45 ms 12600 KB Output isn't correct
14 Incorrect 37 ms 12484 KB Output isn't correct
15 Incorrect 43 ms 12488 KB Output isn't correct
16 Correct 34 ms 11984 KB Output is correct
17 Incorrect 44 ms 10836 KB Output isn't correct
18 Incorrect 46 ms 12240 KB Output isn't correct
19 Correct 35 ms 9564 KB Output is correct
20 Incorrect 43 ms 12424 KB Output isn't correct
21 Correct 63 ms 12348 KB Output is correct
22 Incorrect 58 ms 13244 KB Output isn't correct
23 Incorrect 42 ms 10448 KB Output isn't correct
24 Incorrect 51 ms 11480 KB Output isn't correct
25 Incorrect 42 ms 11716 KB Output isn't correct
26 Correct 29 ms 9048 KB Output is correct
27 Incorrect 49 ms 11468 KB Output isn't correct
28 Incorrect 30 ms 9936 KB Output isn't correct
29 Incorrect 46 ms 12744 KB Output isn't correct
30 Incorrect 30 ms 10452 KB Output isn't correct
31 Incorrect 43 ms 12240 KB Output isn't correct
32 Correct 42 ms 11328 KB Output is correct
33 Incorrect 42 ms 12496 KB Output isn't correct
34 Correct 54 ms 12104 KB Output is correct
35 Correct 43 ms 10952 KB Output is correct
36 Correct 40 ms 11784 KB Output is correct
37 Correct 42 ms 12744 KB Output is correct
38 Correct 53 ms 11220 KB Output is correct
39 Correct 33 ms 10456 KB Output is correct
40 Incorrect 49 ms 12488 KB Output isn't correct
41 Incorrect 50 ms 11468 KB Output isn't correct
42 Correct 43 ms 10844 KB Output is correct
43 Correct 23 ms 8284 KB Output is correct
44 Incorrect 56 ms 13260 KB Output isn't correct
45 Incorrect 12 ms 9052 KB Output isn't correct
46 Correct 35 ms 10956 KB Output is correct
47 Incorrect 42 ms 10888 KB Output isn't correct
48 Incorrect 45 ms 12356 KB Output isn't correct
49 Correct 26 ms 9420 KB Output is correct
50 Incorrect 49 ms 11100 KB Output isn't correct
51 Correct 32 ms 9940 KB Output is correct
52 Correct 50 ms 12232 KB Output is correct
53 Correct 56 ms 11980 KB Output is correct
54 Correct 38 ms 12228 KB Output is correct
55 Correct 50 ms 12348 KB Output is correct
56 Incorrect 40 ms 10188 KB Output isn't correct
57 Correct 12 ms 7768 KB Output is correct
58 Correct 49 ms 12744 KB Output is correct
59 Correct 53 ms 11724 KB Output is correct
60 Incorrect 61 ms 13504 KB Output isn't correct
61 Correct 51 ms 11212 KB Output is correct
62 Correct 49 ms 13000 KB Output is correct
63 Incorrect 36 ms 12372 KB Output isn't correct
64 Correct 47 ms 12748 KB Output is correct
65 Incorrect 45 ms 12744 KB Output isn't correct
66 Correct 55 ms 13504 KB Output is correct
67 Correct 31 ms 10956 KB Output is correct
68 Correct 26 ms 8528 KB Output is correct
69 Incorrect 50 ms 12996 KB Output isn't correct
70 Incorrect 50 ms 12492 KB Output isn't correct
71 Correct 52 ms 12996 KB Output is correct
72 Correct 43 ms 10956 KB Output is correct
73 Incorrect 47 ms 11672 KB Output isn't correct
74 Incorrect 55 ms 12328 KB Output isn't correct
75 Incorrect 45 ms 11976 KB Output isn't correct
76 Correct 42 ms 11468 KB Output is correct
77 Correct 44 ms 12620 KB Output is correct
78 Correct 41 ms 11220 KB Output is correct
79 Correct 29 ms 8748 KB Output is correct
80 Incorrect 47 ms 11212 KB Output isn't correct
81 Correct 37 ms 10444 KB Output is correct
82 Correct 55 ms 11212 KB Output is correct
83 Correct 38 ms 10448 KB Output is correct
84 Correct 35 ms 12232 KB Output is correct
85 Incorrect 44 ms 11984 KB Output isn't correct
86 Incorrect 47 ms 12316 KB Output isn't correct
87 Correct 46 ms 10952 KB Output is correct
88 Correct 47 ms 12736 KB Output is correct
89 Incorrect 41 ms 12484 KB Output isn't correct
90 Incorrect 41 ms 12760 KB Output isn't correct
91 Correct 41 ms 9808 KB Output is correct
92 Incorrect 50 ms 12880 KB Output isn't correct
93 Incorrect 42 ms 11468 KB Output isn't correct
94 Correct 31 ms 9872 KB Output is correct
95 Incorrect 42 ms 11972 KB Output isn't correct
96 Correct 35 ms 11984 KB Output is correct
97 Correct 40 ms 11212 KB Output is correct
98 Correct 53 ms 12228 KB Output is correct
99 Correct 47 ms 11212 KB Output is correct
100 Incorrect 48 ms 12740 KB Output isn't correct
101 Incorrect 53 ms 11840 KB Output isn't correct
102 Incorrect 47 ms 12484 KB Output isn't correct