답안 #29715

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
29715 2017-07-20T11:29:16 Z inqr 미술 수업 (IOI13_artclass) C++14
0 / 100
156 ms 26928 KB
#include "artclass.h"
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define rt insert
#define st first
#define nd second
#define ll long long
using namespace std;
int h,w,r[500][500],g[500][500],b[500][500];


int d[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int d2[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int diffedge,diffsame;
int dfsv[505][505];
vector <pair<int,int> > edges_dfs;
vector <pair<int,int> > edges;

int change(int h1,int w1,int h2,int w2){return abs(r[h1][w1]-r[h2][w2])+abs(g[h1][w1]-g[h2][w2])+abs(b[h1][w1]-b[h2][w2]);}
void dfs(int hn,int wn){
	if(dfsv[hn][wn]==1)return;
	dfsv[hn][wn]=1;
	//printf("\ndfs= %d %d\n",hn,wn);

	int isedge=0;
	for(int i=0;i<8;i++){
		if(change(hn,wn,hn+d[i][0],wn+d[i][1])>=diffedge)
			isedge++;
	}
	if(isedge>=5){
		edges.pb(mp(hn,wn));
		edges_dfs.pb(mp(hn,wn));
	}

	for(int i=0;i<4;i++){
		int hnx=hn+d2[i][0],wnx=wn+d2[i][1];
		//printf("%d %d -> %d %d\n",hn,wn,hnx,wnx);
		//printf("%d %d %d\n",i,d2[i][0],d2[i][1]);
		//printf("hn wn %d %d %d\n",r[hn][wn],g[hn][wn],b[hn][wn]);
		//printf("hnx wnx %d %d %d\n",r[hnx][wnx],g[hnx][wnx],b[hnx][wnx]);
		//printf("change hn hnx=%d\n",change(hn,wn,hnx,wnx));
		//printf("dfsv hn wn =%d hnx wnx=%d\n",dfsv[hn][wn],dfsv[hnx][wnx]);
		if(!dfsv[hnx][wnx]){
			//printf("1\n");
			if(change(hn,wn,hnx,wnx)<=diffsame){
				//printf("2\n");
				if(0<=hnx&&hnx<h&&0<=wnx&&wnx<w){
					//printf("	%d %d -> %d %d\n",hn,wn,hnx,wnx);
					dfs(hn+d2[i][0],wn+d2[i][1]);
				}
			}
		}
	}
}
int solve(){
	int groupcnt=0;
	memset(dfsv,0,sizeof(dfsv));

	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
			if(dfsv[i][j]==0){
				edges.clear();
				groupcnt++;
				dfs(i,j);
				//printf("edges = %d\n",(int)edges_dfs.size());
			}
		}
	}
	//printf("groupcnt=%d\n",groupcnt);
	if(edges.size()<=500)return 1;
	else if(edges.size()>=3000)return 3;
	else return 4;
}
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
	//freopen("artclass.out","w",stdout);
	h=H;w=W;
	long long gg=0,rr=0,bb=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];
			gg+=g[i][j];
			bb+=b[i][j];
			rr+=r[i][j];
			if(gg>=bb+rr)return 2;
		}
	}
	diffsame=160;
	diffedge=320;
    return solve();
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 53 ms 19692 KB Output isn't correct
2 Incorrect 107 ms 19692 KB Output isn't correct
3 Incorrect 104 ms 26928 KB Output isn't correct
4 Incorrect 102 ms 19692 KB Output isn't correct
5 Correct 127 ms 18228 KB Output is correct
6 Incorrect 107 ms 19692 KB Output isn't correct
7 Incorrect 128 ms 19692 KB Output isn't correct
8 Incorrect 110 ms 19692 KB Output isn't correct
9 Correct 138 ms 18228 KB Output is correct
10 Incorrect 89 ms 19692 KB Output isn't correct
11 Incorrect 96 ms 19692 KB Output isn't correct
12 Incorrect 104 ms 19692 KB Output isn't correct
13 Correct 108 ms 18228 KB Output is correct
14 Incorrect 101 ms 19692 KB Output isn't correct
15 Incorrect 112 ms 26928 KB Output isn't correct
16 Incorrect 77 ms 19692 KB Output isn't correct
17 Incorrect 108 ms 19180 KB Output isn't correct
18 Incorrect 120 ms 19692 KB Output isn't correct
19 Incorrect 118 ms 19156 KB Output isn't correct
20 Incorrect 98 ms 19156 KB Output isn't correct
21 Incorrect 108 ms 26928 KB Output isn't correct
22 Incorrect 48 ms 19692 KB Output isn't correct
23 Correct 109 ms 16256 KB Output is correct
24 Incorrect 145 ms 19692 KB Output isn't correct
25 Incorrect 142 ms 26928 KB Output isn't correct
26 Correct 115 ms 16256 KB Output is correct
27 Correct 149 ms 16256 KB Output is correct
28 Correct 72 ms 12468 KB Output is correct
29 Incorrect 93 ms 19180 KB Output isn't correct
30 Correct 92 ms 18228 KB Output is correct
31 Incorrect 114 ms 19692 KB Output isn't correct
32 Incorrect 103 ms 19692 KB Output isn't correct
33 Correct 155 ms 16256 KB Output is correct
34 Correct 109 ms 16256 KB Output is correct
35 Incorrect 154 ms 19156 KB Output isn't correct
36 Correct 106 ms 16256 KB Output is correct
37 Incorrect 94 ms 19692 KB Output isn't correct
38 Incorrect 99 ms 19692 KB Output isn't correct
39 Incorrect 100 ms 26928 KB Output isn't correct
40 Incorrect 117 ms 19692 KB Output isn't correct
41 Incorrect 151 ms 19692 KB Output isn't correct
42 Incorrect 105 ms 19692 KB Output isn't correct
43 Incorrect 89 ms 19156 KB Output isn't correct
44 Incorrect 123 ms 19692 KB Output isn't correct
45 Incorrect 109 ms 19692 KB Output isn't correct
46 Incorrect 95 ms 19692 KB Output isn't correct
47 Incorrect 78 ms 26928 KB Output isn't correct
48 Correct 125 ms 16256 KB Output is correct
49 Incorrect 107 ms 26928 KB Output isn't correct
50 Incorrect 67 ms 26928 KB Output isn't correct
51 Correct 113 ms 16256 KB Output is correct
52 Correct 114 ms 17720 KB Output is correct
53 Correct 99 ms 18228 KB Output is correct
54 Correct 91 ms 18228 KB Output is correct
55 Incorrect 68 ms 19692 KB Output isn't correct
56 Incorrect 107 ms 19692 KB Output isn't correct
57 Incorrect 94 ms 19692 KB Output isn't correct
58 Incorrect 137 ms 26928 KB Output isn't correct
59 Incorrect 109 ms 19692 KB Output isn't correct
60 Incorrect 126 ms 19692 KB Output isn't correct
61 Incorrect 108 ms 19692 KB Output isn't correct
62 Incorrect 87 ms 19692 KB Output isn't correct
63 Incorrect 92 ms 19692 KB Output isn't correct
64 Incorrect 104 ms 19692 KB Output isn't correct
65 Incorrect 94 ms 19692 KB Output isn't correct
66 Incorrect 119 ms 26928 KB Output isn't correct
67 Incorrect 48 ms 19692 KB Output isn't correct
68 Incorrect 53 ms 19692 KB Output isn't correct
69 Incorrect 99 ms 26928 KB Output isn't correct
70 Incorrect 107 ms 26928 KB Output isn't correct
71 Incorrect 101 ms 26928 KB Output isn't correct
72 Incorrect 28 ms 19692 KB Output isn't correct
73 Incorrect 116 ms 19692 KB Output isn't correct
74 Incorrect 122 ms 26928 KB Output isn't correct
75 Correct 141 ms 18228 KB Output is correct
76 Correct 61 ms 19692 KB Output is correct
77 Incorrect 95 ms 19692 KB Output isn't correct
78 Correct 93 ms 11436 KB Output is correct
79 Incorrect 114 ms 26928 KB Output isn't correct
80 Incorrect 109 ms 22016 KB Output isn't correct
81 Incorrect 79 ms 26928 KB Output isn't correct
82 Correct 113 ms 19156 KB Output is correct
83 Incorrect 75 ms 19692 KB Output isn't correct
84 Incorrect 90 ms 19692 KB Output isn't correct
85 Incorrect 77 ms 19692 KB Output isn't correct
86 Incorrect 146 ms 26928 KB Output isn't correct
87 Correct 156 ms 19156 KB Output is correct
88 Incorrect 128 ms 19692 KB Output isn't correct
89 Incorrect 106 ms 26928 KB Output isn't correct
90 Incorrect 117 ms 26928 KB Output isn't correct
91 Correct 96 ms 16256 KB Output is correct
92 Incorrect 118 ms 19692 KB Output isn't correct
93 Incorrect 140 ms 26928 KB Output isn't correct
94 Incorrect 129 ms 19156 KB Output isn't correct
95 Incorrect 110 ms 19692 KB Output isn't correct
96 Incorrect 97 ms 19692 KB Output isn't correct
97 Correct 58 ms 6264 KB Output is correct
98 Correct 106 ms 19156 KB Output is correct
99 Incorrect 100 ms 26928 KB Output isn't correct
100 Incorrect 120 ms 19692 KB Output isn't correct
101 Incorrect 103 ms 19692 KB Output isn't correct
102 Incorrect 98 ms 26928 KB Output isn't correct