| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 250053 | MarcoMeijer | 미술 수업 (IOI13_artclass) | C++14 | 109 ms | 15096 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 <bits/stdc++.h>
using namespace std;
//macros
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<ll, ll> lll;
typedef tuple<int, int, int> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
typedef vector<lll> vlll;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define RE(a,c) REP(a,0,c)
#define RE1(a,c) REP(a,1,c+1)
#define REI(a,b,c) REP(a,b,c+1)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define INF 1e9
#define pb push_back
#define fi first
#define se second
#define sz size()
double c [500][500][3];
double cd[500][500][3];
int dx[]={-1,0,1,0,1,-1,1,-1};
int dy[]={0,1,0,-1,1,1,-1,-1};
double mult[]={2,2,2,2,1,1,1,1};
int h, w;
bool inside(int x, int y) {return x>=0 && x<h && y>=0 && y<w;}
double examples[4][27] = {{
14968.8,
8517.3,
6046.87,
2228.28,
1542.86,
3661.38,
3068.22,
3945.73,
5627.57,
6715.76,
6619.95,
8050.14,
7332.96,
7551.7,
7971.12,
955.079,
5285.21,
10456.4,
10231.6,
7303.18,
11097.2,
1289.51,
4803.93,
12652.7,
1112.03,
2135.82,
1663.29,
},
{
1863.74,
2249.91,
2795.88,
1098.98,
991.329,
1764.39,
3713.81,
1131.94,
1585.1,
2288.83,
1271.49,
1016.72,
3608.12,
4070.76,
2202.34,
552.871,
361.696,
877.492,
1337.11,
1842.26,
1965.81,
137.16,
87.8501,
252.831,
23.189,
8.9428,
8.38442,
},
{
561.666,
222.064,
168.7,
1810.96,
1528.12,
2163.46,
1130.87,
1298.87,
1782.49,
1319.54,
1188.81,
1052.23,
1368.85,
1061.6,
663.857,
1075.17,
1062.05,
633.368,
2959.96,
1765.37,
684.13,
1145.57,
720.111,
186.855,
121.868,
74.7885,
34.0162,
},
{
134.112,
4.60749,
13.4158,
185.728,
22.5654,
9.97318,
453.825,
271.306,
210.62,
235.882,
3367.58,
7097.47,
1912.29,
433.348,
926.524,
273.41,
1627.74,
2039.21,
3491.69,
323.028,
59.1425,
272.009,
204.556,
15.127,
948.653,
414.824,
285.082,
}};
int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]) {
h=H, w=W;
RE(i,h) RE(j,w) c[i][j][0] = (double)R[i][j]/255.0;
RE(i,h) RE(j,w) c[i][j][1] = (double)G[i][j]/255.0;
RE(i,h) RE(j,w) c[i][j][2] = (double)B[i][j]/255.0;
RE(x,h) RE(y,w) RE(z,3) {
cd[x][y][z] = 0;
RE(d,8) {
int nx=x+dx[d];
int ny=y+dy[d];
if(!inside(nx,ny)) continue;
double dif = (c[ny][nx][z] - c[x][y][z])*mult[d];
cd[x][y][z] += dif*dif;
}
}
double values[3];
RE(z,3) {
double avg=0;
RE(x,h) RE(y,w) avg+=cd[x][y][z]*cd[x][y][z];
avg /= double(h*w);
double tot=0;
RE(x,h) RE(y,w) {
double a = cd[x][y][z]*cd[x][y][z] - avg;
tot += a*a;
}
tot /= double(h*w);
values[z] = tot;
//cout<<tot<<", "<<endl;
}
int ans = 0;
double closest = INF;
RE(i,4) {
RE(j,9) {
double dist = 0.0;
RE(k,3) dist += fabs(values[k]-examples[i][j*3+k]);
if(dist < closest) {
closest = dist;
ans = i;
}
}
}
return ans+1;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
