제출 #962320

#제출 시각아이디문제언어결과실행 시간메모리
962320simona1230미술 수업 (IOI13_artclass)C++17
0 / 100
80 ms15324 KiB
#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 timeMemoryGrader output
Fetching results...