# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
76667 | Bodo171 | Art Class (IOI13_artclass) | C++14 | 192 ms | 15412 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 "artclass.h"
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int i,j;
const int nmax=505;
long double sumR,sumG,sumB,cate;
long double d[4][4]={{1708.66,1500.83,1326.18},{925.686,883.002,578.071},{1265.28,1156.13,963.276},{1422.97,807.953,497.835}};
long double a[4];
bool busit[4];
int viz[505][505],r[nmax][nmax],g[nmax][nmax],b[nmax][nmax];
long double d0,d1,d2,d3,dR,culoare;
int mn,blanks,cc,n,m;
int dl[]={-1,0,1,0};
int dc[]={0,-1,0,1};
long double dist(long double unu[4],long double doi[4])
{
d0=unu[0]/unu[1];
d1=unu[0]/unu[2];
d2=doi[0]/doi[1];
d3=doi[0]/doi[2];
dR=unu[1]/unu[2]-doi[1]/doi[2];
d0-=d2;d1-=d3;
return (d0*d0+d1*d1+dR*dR);
}
int abss(int A)
{
if(A<0) return -A;
return A;
}
void filll(int li,int ci)
{
cc++;viz[li][ci]=1;int lf,cf;
for(int ii=0;ii<4;ii++)
{
lf=li+dl[ii];
cf=ci+dc[ii];
if((!viz[lf][cf])&&lf>0&&cf>0&&lf<=n&&cf<=m&&abss(r[lf][cf]-r[li][ci])<=3&&abss(g[lf][cf]-g[li][ci])<=3&&abss(b[lf][cf]-b[li][ci])<=3)
filll(lf,cf);
}
}
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
sumR+=R[i][j];
sumG+=G[i][j];
sumB+=B[i][j];
r[i+1][j+1]=R[i][j];
g[i+1][j+1]=G[i][j];
b[i+1][j+1]=B[i][j];
}
n=H;m=W;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(!viz[i][j])
{
cc=0;
filll(i,j);
if(cc>H*W/10)
busit[1]=busit[2]=1;
}
cate=H*W;
a[0]=sumR/cate;a[1]=sumG/cate;a[2]=sumB/cate;mn=0;
culoare=a[0]+a[1]+a[2];
for(i=0;i<4;i++)
{
if((!busit[i])&&dist(a,d[i])<dist(a,d[mn]))
mn=i;
}
mn++;
return mn;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |