Submission #18019

#TimeUsernameProblemLanguageResultExecution timeMemory
18019suhgyuho_williamArt Class (IOI13_artclass)C++98
76 / 100
158 ms19416 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; } */ #include "artclass.h" #include<stdlib.h> int style(int H, int W, int rr[500][500], int gg[500][500], int bb[500][500]) { N = H; M = W; int i,j; for(i=1; i<=N; i++) for(j=1; j<=M; j++){ R[i][j] = rr[i][j]; G[i][j] = gg[i][j]; B[i][j] = bb[i][j]; } process(); return print; }

Compilation message (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]);
                                          ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...