답안 #940454

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
940454 2024-03-07T09:34:54 Z shenfe1 미술 수업 (IOI13_artclass) C++17
0 / 100
64 ms 12240 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=20;
  ld ch1=0,ch4=0;
  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++;
        }
      }
    }
    ch1+=cnt*1.0/H/W;
    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){
              ch1+=1.0/H/W;
            }
          }
        }
      }
    }
    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++;
    }
    ch4+=1.0*cnt/H/W;
  }
  if(ch1>ch4&&ch1>=0.7){
    return 1;
  }
  if(ch4>=0.7)return 4;
  // return -1;
  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")
      | 
artclass.cpp: In function 'int style(int, int, int (*)[500], int (*)[500], int (*)[500])':
artclass.cpp:108:15: warning: unused variable 'cnt' [-Wunused-variable]
  108 |           int cnt=0;
      |               ^~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 49 ms 11976 KB Output isn't correct
2 Incorrect 42 ms 11380 KB Output isn't correct
3 Incorrect 43 ms 11560 KB Output isn't correct
4 Incorrect 44 ms 11464 KB Output isn't correct
5 Incorrect 33 ms 9536 KB Output isn't correct
6 Incorrect 41 ms 11456 KB Output isn't correct
7 Incorrect 39 ms 10536 KB Output isn't correct
8 Incorrect 64 ms 11208 KB Output isn't correct
9 Incorrect 44 ms 11468 KB Output isn't correct
10 Incorrect 35 ms 9676 KB Output isn't correct
11 Correct 53 ms 12012 KB Output is correct
12 Incorrect 46 ms 10912 KB Output isn't correct
13 Incorrect 39 ms 11344 KB Output isn't correct
14 Incorrect 25 ms 10188 KB Output isn't correct
15 Correct 28 ms 8784 KB Output is correct
16 Incorrect 32 ms 10560 KB Output isn't correct
17 Correct 52 ms 12228 KB Output is correct
18 Incorrect 39 ms 10188 KB Output isn't correct
19 Incorrect 37 ms 10760 KB Output isn't correct
20 Incorrect 30 ms 11716 KB Output isn't correct
21 Incorrect 47 ms 11460 KB Output isn't correct
22 Incorrect 38 ms 10088 KB Output isn't correct
23 Incorrect 43 ms 10720 KB Output isn't correct
24 Correct 51 ms 12196 KB Output is correct
25 Incorrect 42 ms 10892 KB Output isn't correct
26 Correct 47 ms 10996 KB Output is correct
27 Incorrect 47 ms 11720 KB Output isn't correct
28 Correct 51 ms 10448 KB Output is correct
29 Incorrect 42 ms 11720 KB Output isn't correct
30 Incorrect 37 ms 10948 KB Output isn't correct
31 Incorrect 40 ms 11208 KB Output isn't correct
32 Incorrect 45 ms 12076 KB Output isn't correct
33 Incorrect 44 ms 11456 KB Output isn't correct
34 Incorrect 45 ms 10860 KB Output isn't correct
35 Incorrect 30 ms 10444 KB Output isn't correct
36 Incorrect 44 ms 11720 KB Output isn't correct
37 Correct 64 ms 11972 KB Output is correct
38 Incorrect 42 ms 11832 KB Output isn't correct
39 Correct 35 ms 10228 KB Output is correct
40 Correct 42 ms 11900 KB Output is correct
41 Correct 42 ms 11876 KB Output is correct
42 Incorrect 47 ms 11748 KB Output isn't correct
43 Correct 50 ms 10468 KB Output is correct
44 Incorrect 22 ms 8276 KB Output isn't correct
45 Incorrect 31 ms 8788 KB Output isn't correct
46 Incorrect 41 ms 11716 KB Output isn't correct
47 Incorrect 49 ms 11876 KB Output isn't correct
48 Incorrect 40 ms 11716 KB Output isn't correct
49 Incorrect 24 ms 9416 KB Output isn't correct
50 Incorrect 45 ms 11720 KB Output isn't correct
51 Correct 46 ms 10320 KB Output is correct
52 Correct 50 ms 10448 KB Output is correct
53 Incorrect 40 ms 11984 KB Output isn't correct
54 Correct 51 ms 11984 KB Output is correct
55 Incorrect 50 ms 11464 KB Output isn't correct
56 Incorrect 51 ms 11940 KB Output isn't correct
57 Incorrect 27 ms 8652 KB Output isn't correct
58 Incorrect 33 ms 9672 KB Output isn't correct
59 Correct 49 ms 10304 KB Output is correct
60 Incorrect 41 ms 9300 KB Output isn't correct
61 Correct 54 ms 11176 KB Output is correct
62 Incorrect 40 ms 11716 KB Output isn't correct
63 Incorrect 40 ms 11396 KB Output isn't correct
64 Correct 40 ms 10188 KB Output is correct
65 Incorrect 43 ms 11884 KB Output isn't correct
66 Incorrect 28 ms 9648 KB Output isn't correct
67 Incorrect 11 ms 8792 KB Output isn't correct
68 Incorrect 44 ms 11864 KB Output isn't correct
69 Incorrect 43 ms 11720 KB Output isn't correct
70 Incorrect 36 ms 11152 KB Output isn't correct
71 Incorrect 43 ms 11788 KB Output isn't correct
72 Incorrect 42 ms 11720 KB Output isn't correct
73 Incorrect 41 ms 11720 KB Output isn't correct
74 Incorrect 38 ms 11204 KB Output isn't correct
75 Incorrect 33 ms 11460 KB Output isn't correct
76 Incorrect 35 ms 11464 KB Output isn't correct
77 Incorrect 40 ms 10288 KB Output isn't correct
78 Incorrect 46 ms 11436 KB Output isn't correct
79 Correct 43 ms 10136 KB Output is correct
80 Incorrect 42 ms 11464 KB Output isn't correct
81 Incorrect 37 ms 11208 KB Output isn't correct
82 Incorrect 33 ms 9856 KB Output isn't correct
83 Incorrect 35 ms 11464 KB Output isn't correct
84 Incorrect 11 ms 7516 KB Output isn't correct
85 Incorrect 48 ms 12140 KB Output isn't correct
86 Incorrect 42 ms 11540 KB Output isn't correct
87 Incorrect 47 ms 11972 KB Output isn't correct
88 Incorrect 56 ms 12240 KB Output isn't correct
89 Correct 48 ms 11976 KB Output is correct
90 Incorrect 42 ms 12016 KB Output isn't correct
91 Incorrect 44 ms 11220 KB Output isn't correct
92 Correct 30 ms 10440 KB Output is correct
93 Incorrect 43 ms 11580 KB Output isn't correct
94 Incorrect 43 ms 11460 KB Output isn't correct
95 Correct 56 ms 10640 KB Output is correct
96 Incorrect 38 ms 11868 KB Output isn't correct
97 Incorrect 33 ms 10444 KB Output isn't correct
98 Correct 34 ms 11708 KB Output is correct
99 Incorrect 48 ms 11680 KB Output isn't correct
100 Incorrect 23 ms 8704 KB Output isn't correct
101 Incorrect 39 ms 10296 KB Output isn't correct
102 Correct 54 ms 11264 KB Output is correct