제출 #18018

#제출 시각아이디문제언어결과실행 시간메모리
18018suhgyuho_william미술 수업 (IOI13_artclass)C++98
컴파일 에러
0 ms0 KiB
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>

using namespace std;

int N,M,ans;
int R[502][502],G[502][502],B[502][502];
int cntr[256],cntg[256],cntb[256];
int print;
int a[502][502][3];
bool check[502][502];
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};

int t,nextx,nexty;
int pcnt;
void dfs(int x,int y){
	check[x][y] = true;
	pcnt++;
	for(t=0; t<4; t++){
		nextx = x+dx[t]; nexty = y+dy[t];
		if(nextx <1 || nextx > N || nexty < 1 || nexty > M) continue;
		if(!check[nextx][nexty] && abs(R[x][y]-R[nextx][nexty])+abs(G[x][y]-G[nextx][nexty])+abs(B[x][y]-B[nextx][nexty]) < 42) dfs(nextx,nexty);
	}
}

int x[200000],rear;
double dd;
void process(){
	int i,j;
	int r,g,b;
	int maxr,maxg,maxb;
	int cnt = 15;
	int dfscnt = 0;
	int big;

	r = g = b = 0;
	for(i=0; i<=255; i++) cntr[i] = cntg[i] = cntb[i] = 0;
	for(i=1; i<=N; i++) for(j=1; j<=M; j++){ cntr[R[i][j]]++; cntg[G[i][j]]++; cntb[B[i][j]]++; }
	for(i=0; i<=255; i++){
		if(cntr[i] > cnt) r++;
		if(cntg[i] > cnt) g++;
		if(cntb[i] > cnt) b++;
	}
	for(i=1; i<=N; i++) for(j=1; j<=M; j++) a[i][j][0] = R[i][j];
	for(i=1; i<=N; i++) for(j=1; j<=M; j++) a[i][j][1] = G[i][j];
	for(i=1; i<=N; i++) for(j=1; j<=M; j++) a[i][j][2] = B[i][j];
	//printf("%4d %4d %4d %4d  ",r,g,b,r+g+b);
	maxr = maxg = maxb = 0;
	for(i=0; i<=255; i++){
		maxr = max(maxr,cntr[i]);
		maxg = max(maxg,cntg[i]);
		maxb = max(maxb,cntb[i]);
	}
	//printf("%7d    ",maxr+maxg+maxb);
	for(i=1; i<=N; i++) for(j=1; j<=M; j++) check[i][j] = false;
	big = rear = 0;
	for(i=1; i<=N; i++){
		for(j=1; j<=M; j++){
			if(!check[i][j]){
				pcnt = 0;
				dfs(i,j);
				dfscnt++;
				x[dfscnt] = pcnt;
			}
		}
	}
	if(dfscnt <= 650){ print = 4; return; }
	sort(x+1,x+dfscnt+1);
	for(i=max(1,dfscnt-8); i<=dfscnt; i++) big += x[i];
	dd = dfscnt*100;
	dd /= (double)(M*N);
	if(dd >= 25){ print = 3; return; }
	if(dd >= 8.3){ print = 2; return; }
	else{ print = 1; return; }
	//printf("%7d  ",dfscnt);
	printf("%lf",dd);
	printf("\n");
}

void input(){
	int i,j;
	scanf("%d %d",&N,&M);
	for(i=1; i<=N; i++) for(j=1; j<=M; j++) scanf("%d",&R[i][j]);
	for(i=1; i<=N; i++) for(j=1; j<=M; j++) scanf("%d",&G[i][j]);
	for(i=1; i<=N; i++) for(j=1; j<=M; j++) scanf("%d",&B[i][j]);
}
/*
void testing(){
	int i,j,k;
	FILE *in = fopen("input1.txt","r");
	FILE *in2 = fopen("input2.txt","r");
	FILE *in3 = fopen("input3.txt","r");
	FILE *in4 = fopen("input4.txt","r");

	for(i=1; i<=9; i++){
		fscanf(in,"%d %d",&N,&M);
		ans = 1;
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in,"%d",&R[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in,"%d",&G[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in,"%d",&B[j][k]);
		process();
	}
	printf("\n");
	for(i=1; i<=9; i++){
		fscanf(in2,"%d %d",&N,&M);
		ans = 2;
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in2,"%d",&R[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in2,"%d",&G[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in2,"%d",&B[j][k]);
		process();
	}
	printf("\n");
	for(i=1; i<=9; i++){
		fscanf(in3,"%d %d",&N,&M);
		ans = 3;
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in3,"%d",&R[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in3,"%d",&G[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in3,"%d",&B[j][k]);
		process();
	}
	printf("\n");
	for(i=1; i<=9; i++){
		fscanf(in4,"%d %d",&N,&M);
		ans = 4;
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in4,"%d",&R[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in4,"%d",&G[j][k]);
		for(j=1; j<=N; j++) for(k=1; k<=M; k++) fscanf(in4,"%d",&B[j][k]);
		process();
	}
}
*/
int main(void){
	//freopen("input.txt","r",stdin);
	input();
	process(); printf("%d",print);
	//testing();

	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

artclass.cpp: In function 'void input()':
artclass.cpp:84:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&N,&M);
  ~~~~~^~~~~~~~~~~~~~~
artclass.cpp:85:47: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(i=1; i<=N; i++) for(j=1; j<=M; j++) scanf("%d",&R[i][j]);
                                          ~~~~~^~~~~~~~~~~~~~~
artclass.cpp:86:47: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(i=1; i<=N; i++) for(j=1; j<=M; j++) scanf("%d",&G[i][j]);
                                          ~~~~~^~~~~~~~~~~~~~~
artclass.cpp:87:47: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(i=1; i<=N; i++) for(j=1; j<=M; j++) scanf("%d",&B[i][j]);
                                          ~~~~~^~~~~~~~~~~~~~~
/tmp/cccBaByI.o: In function `main':
artclass.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccbA93Hs.o:grader.c:(.text.startup+0x0): first defined here
/tmp/ccbA93Hs.o: In function `main':
grader.c:(.text.startup+0x202): undefined reference to `style'
collect2: error: ld returned 1 exit status