# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
962320 | simona1230 | 미술 수업 (IOI13_artclass) | C++17 | 80 ms | 15324 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "artclass.h"
using namespace std;
int h,w,r[501][501],g[501][501],b[501][501];
int lim;
struct ver
{
int x,y;
ver() {}
ver(int _x,int _y)
{
x=_x;
y=_y;
}
ver operator+(ver v)
{
return {v.x+x,v.y+y};
}
};
int comp[501][501],num;
int fg,fb,fr;
ver p[4]= {{1,0},{0,1},{-1,0},{0,-1}};
bool in_range(ver i)
{
return i.x>=0&&i.x<h&&i.y>=0&&i.y<w;
}
bool corr(ver i)
{
return abs(r[i.x][i.y]-fr)<=lim&&abs(g[i.x][i.y]-fg)<=lim&&abs(b[i.x][i.y]-fg)<=lim;
}
void dfs(ver i)
{
comp[i.x][i.y]=num;
for(int j=0; j<4; j++)
{
ver nb=p[j]+i;
if(in_range(nb)&&!comp[nb.x][nb.y]&&corr(i))
dfs(nb);
}
}
int style(int H,int W,int R[500][500],int G[500][500],int B[500][500])
{
h=H;
w=W;
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];
}
}
int gr=0;
int wh=0;
lim=30;
//cout<<"?"<<endl;
for(int i=0; i<h; i++)
{
for(int j=0; j<w; j++)
{
if(!comp[i][j])
{
fg=g[i][j];
fb=b[i][j];
fr=r[i][j];
num++;
//cout<<num<<" "<<i<<" "<<j<<endl;
dfs({i,j});
}
if(g[i][j]>=125&&b[i][j]<=125&&r[i][j]<=75)gr++;
if(r[i][j]>=200&&b[i][j]>=200&&g[i][j]>=200)wh++;
}
}
double perg=gr/(w*h);
double perw=wh/(w*h);
//cout<<num<<" "<<perg<<" "<<perw<<endl;
if(num<=10)
{
if(perw>=50)return 1;
return 4;
}
else
{
if(perg>=30)return 2;
return 3;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |