답안 #940547

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
940547 2024-03-07T10:28:47 Z vjudge1 미술 수업 (IOI13_artclass) C++17
2 / 100
71 ms 13256 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")
      |
# 결과 실행 시간 메모리 Grader output
1 Incorrect 44 ms 10192 KB Output isn't correct
2 Incorrect 48 ms 11464 KB Output isn't correct
3 Correct 28 ms 8028 KB Output is correct
4 Incorrect 42 ms 9696 KB Output isn't correct
5 Incorrect 43 ms 10440 KB Output isn't correct
6 Correct 30 ms 8276 KB Output is correct
7 Correct 41 ms 10444 KB Output is correct
8 Correct 48 ms 10064 KB Output is correct
9 Incorrect 43 ms 11204 KB Output isn't correct
10 Incorrect 36 ms 9672 KB Output isn't correct
11 Incorrect 48 ms 11740 KB Output isn't correct
12 Correct 49 ms 10188 KB Output is correct
13 Incorrect 48 ms 11720 KB Output isn't correct
14 Incorrect 54 ms 10936 KB Output isn't correct
15 Incorrect 51 ms 12224 KB Output isn't correct
16 Incorrect 13 ms 7512 KB Output isn't correct
17 Incorrect 49 ms 10300 KB Output isn't correct
18 Incorrect 46 ms 11460 KB Output isn't correct
19 Incorrect 46 ms 11972 KB Output isn't correct
20 Incorrect 39 ms 11724 KB Output isn't correct
21 Incorrect 45 ms 11464 KB Output isn't correct
22 Correct 25 ms 8284 KB Output is correct
23 Incorrect 47 ms 11468 KB Output isn't correct
24 Correct 50 ms 11748 KB Output is correct
25 Correct 61 ms 11328 KB Output is correct
26 Correct 34 ms 9936 KB Output is correct
27 Correct 42 ms 11592 KB Output is correct
28 Correct 48 ms 11344 KB Output is correct
29 Incorrect 49 ms 11464 KB Output isn't correct
30 Incorrect 44 ms 11716 KB Output isn't correct
31 Incorrect 49 ms 10572 KB Output isn't correct
32 Incorrect 61 ms 11272 KB Output isn't correct
33 Incorrect 49 ms 11720 KB Output isn't correct
34 Incorrect 49 ms 11464 KB Output isn't correct
35 Incorrect 33 ms 10188 KB Output isn't correct
36 Incorrect 45 ms 11716 KB Output isn't correct
37 Incorrect 41 ms 9676 KB Output isn't correct
38 Incorrect 48 ms 11468 KB Output isn't correct
39 Incorrect 55 ms 11976 KB Output isn't correct
40 Incorrect 26 ms 9172 KB Output isn't correct
41 Correct 47 ms 9648 KB Output is correct
42 Correct 57 ms 10448 KB Output is correct
43 Incorrect 53 ms 11720 KB Output isn't correct
44 Correct 44 ms 10700 KB Output is correct
45 Incorrect 49 ms 11464 KB Output isn't correct
46 Correct 64 ms 10268 KB Output is correct
47 Incorrect 32 ms 10064 KB Output isn't correct
48 Correct 52 ms 10924 KB Output is correct
49 Incorrect 53 ms 12224 KB Output isn't correct
50 Correct 62 ms 10444 KB Output is correct
51 Incorrect 40 ms 11464 KB Output isn't correct
52 Incorrect 58 ms 12472 KB Output isn't correct
53 Incorrect 58 ms 12396 KB Output isn't correct
54 Incorrect 42 ms 10324 KB Output isn't correct
55 Incorrect 46 ms 11720 KB Output isn't correct
56 Incorrect 44 ms 11144 KB Output isn't correct
57 Incorrect 55 ms 10788 KB Output isn't correct
58 Incorrect 50 ms 9300 KB Output isn't correct
59 Correct 52 ms 11464 KB Output is correct
60 Incorrect 45 ms 11716 KB Output isn't correct
61 Incorrect 45 ms 9928 KB Output isn't correct
62 Correct 33 ms 9680 KB Output is correct
63 Incorrect 36 ms 10552 KB Output isn't correct
64 Incorrect 36 ms 11716 KB Output isn't correct
65 Incorrect 46 ms 10300 KB Output isn't correct
66 Incorrect 43 ms 10568 KB Output isn't correct
67 Incorrect 44 ms 11736 KB Output isn't correct
68 Incorrect 46 ms 11868 KB Output isn't correct
69 Correct 71 ms 12232 KB Output is correct
70 Correct 36 ms 11464 KB Output is correct
71 Incorrect 40 ms 11716 KB Output isn't correct
72 Incorrect 48 ms 10700 KB Output isn't correct
73 Incorrect 43 ms 11232 KB Output isn't correct
74 Correct 56 ms 11244 KB Output is correct
75 Correct 54 ms 10700 KB Output is correct
76 Correct 56 ms 13256 KB Output is correct
77 Correct 32 ms 9484 KB Output is correct
78 Incorrect 42 ms 10732 KB Output isn't correct
79 Incorrect 50 ms 11716 KB Output isn't correct
80 Incorrect 37 ms 11460 KB Output isn't correct
81 Incorrect 45 ms 11204 KB Output isn't correct
82 Incorrect 41 ms 10208 KB Output isn't correct
83 Incorrect 41 ms 10440 KB Output isn't correct
84 Incorrect 51 ms 11872 KB Output isn't correct
85 Incorrect 40 ms 11196 KB Output isn't correct
86 Incorrect 41 ms 10444 KB Output isn't correct
87 Correct 63 ms 10192 KB Output is correct
88 Incorrect 45 ms 11944 KB Output isn't correct
89 Correct 50 ms 11896 KB Output is correct
90 Incorrect 45 ms 10704 KB Output isn't correct
91 Incorrect 30 ms 9672 KB Output isn't correct
92 Correct 55 ms 10468 KB Output is correct
93 Incorrect 45 ms 10328 KB Output isn't correct
94 Correct 45 ms 10192 KB Output is correct
95 Correct 30 ms 8788 KB Output is correct
96 Incorrect 58 ms 10700 KB Output isn't correct
97 Incorrect 52 ms 11972 KB Output isn't correct
98 Incorrect 12 ms 8792 KB Output isn't correct
99 Correct 34 ms 11548 KB Output is correct
100 Correct 47 ms 11464 KB Output is correct
101 Incorrect 48 ms 10704 KB Output isn't correct
102 Incorrect 36 ms 8816 KB Output isn't correct