# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
18019 | suhgyuho_william | Art Class (IOI13_artclass) | C++98 | 158 ms | 19416 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |