# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
513604 | 600Mihnea | 미술 수업 (IOI13_artclass) | C++17 | 90 ms | 11496 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "artclass.h"
#include <bits/stdc++.h>
using namespace std;
/// attention : mean everything
/// clustering
typedef long double ld;
ld getmean(vector<ld> guys) {
if (guys.empty()) {
return 0;
}
ld sum = 0;
for (auto &x : guys) {
sum += x;
}
sum /= (ld) ((int) guys.size());
return sum;
}
ld devi(int n, int m, int a[500][500]) {
vector<ld> all;
for (int i = 1; i + 1 < n; i++) {
for (int j = 1; j + 1 < m; j++) {
ld sum = 0;
sum += a[i - 1][j - 1] + a[i - 1][j] + a[i - 1][j + 1];
sum += a[i][j - 1] + a[i][j] + a[i][j + 1];
sum += a[i + 1][j - 1] + a[i + 1][j] + a[i + 1][j + 1];
all.push_back(abs(a[i][j] - sum / 9));
}
}
return getmean(all);
}
vector<ld> rr[5];
vector<ld> gg[5];
vector<ld> bb[5];
ld devi_r[5];
ld devi_g[5];
ld devi_b[5];
bool gen = 0;
int step = 0;
int style(int n, int m, int r[500][500], int g[500][500], int b[500][500]) {
if (gen) {
int type = step / 9 + 1;
step++;
rr[type].push_back(devi(n, m, r));
gg[type].push_back(devi(n, m, g));
bb[type].push_back(devi(n, m, b));
if (step == 4 * 9) {
for (int i = 1; i <= 4; i++) {
cout << "devi_r[" << i << "] = " << getmean(rr[i]) << ";\n";
cout << "devi_g[" << i << "] = " << getmean(gg[i]) << ";\n";
cout << "devi_b[" << i << "] = " << getmean(bb[i]) << ";\n";
}
}
} else {
devi_r[1] = 3.97219;
devi_g[1] = 3.99654;
devi_b[1] = 4.11924;
devi_r[2] = 6.91017;
devi_g[2] = 6.85403;
devi_b[2] = 6.68645;
devi_r[3] = 19.0843;
devi_g[3] = 19.0358;
devi_b[3] = 18.7323;
devi_r[4] = 1.25593;
devi_g[4] = 1.09269;
devi_b[4] = 1.22006;
ld my_devi_r = devi(n, m, r);
ld my_devi_g = devi(n, m, g);
ld my_devi_b = devi(n, m, b);
ld min_loss = (ld) 1e9;
int sol = -1;
for (int type = 1; type <= 4; type++) {
ld loss = 0;
loss += abs(my_devi_r - devi_r[type]);
loss += abs(my_devi_g - devi_g[type]);
loss += abs(my_devi_b - devi_b[type]);
if (loss < min_loss) {
min_loss = loss;
sol = type;
}
}
assert(sol != -1);
assert(1 <= sol && sol <= 4);
return sol;
}
return 777;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |