# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
97591 | georgerapeanu | 미술 수업 (IOI13_artclass) | C++11 | 252 ms | 11436 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "artclass.h"
#include <cstdio>
#include <set>
#include <algorithm>
#include <queue>
using namespace std;
const int dx[] = {-1,0,1,0};
const int dy[] = {0,1,0,-1};
set<pair<pair<int,int>,int> > s;
bool viz[500][500];
double abs_gr(int a){
const double split = 200;
const double split_val = 0.30;
if(a <= split) return a / (split / split_val);
return split_val + (1 - split_val) * (a - split) / (255 - split);
}
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
double averageR = 0;
double averageG = 0;
double averageB = 0;
double area = 0;
double absolutes = 0;
for(int i = 0;i < H;i++){
for(int j = 0;j < W;j++){
s.insert(make_pair(make_pair(R[i][j],G[i][j]),B[i][j]));
averageR += R[i][j];
averageG += G[i][j];
averageB += B[i][j];
absolutes += max(abs_gr(R[i][j]),max(abs_gr(G[i][j]),abs_gr(B[i][j])));
}
}
absolutes /= H;
absolutes /= W;
averageR /= H;
averageR /= W;
averageR /= 255.0;
averageG /= H;
averageG /= W;
averageG /= 255.0;
averageB /= H;
averageB /= W;
averageB /= 255.0;
double average = (averageR + averageG + averageB) / 3.0;
double averageRGB = (0.20 * averageR + 0.55 * averageG + 0.25 * averageB);
double num = s.size();
if(absolutes >= 0.385){///1 and 4
if(average <= 0.59){
return 4;
}
else{
return 1;
}
}
else{///2 and 3
if(average >= 0.40){
return 3;
}
else{
return 2;
}
}
printf("%.6f ",num);
printf("%.6f ",average);
printf("%.6f ",averageR);
printf("%.6f ",averageG);
printf("%.6f ",averageB);
printf("%.6f ",averageRGB);
printf("%.6f ",absolutes);
return -1;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |