Submission #762204

#TimeUsernameProblemLanguageResultExecution timeMemory
762204SanguineChameleonArt Class (IOI13_artclass)C++17
29 / 100
56 ms3292 KiB
#include "artclass.h"
#include <bits/stdc++.h>
using namespace std;

const int BLOCK_CNT = 32;
const int BLOCK_SIZE = 256 / BLOCK_CNT;
int A[BLOCK_CNT][3];
int E[4][BLOCK_CNT][3];

int style(int N, int M, int R[500][500], int G[500][500], int B[500][500]) {
	E[0][0][0] = 74449;
	E[0][0][1] = 114158;
	E[0][0][2] = 271205;
	E[0][1][0] = 43364;
	E[0][1][1] = 55514;
	E[0][1][2] = 89618;
	E[0][2][0] = 40930;
	E[0][2][1] = 47443;
	E[0][2][2] = 66802;
	E[0][3][0] = 50378;
	E[0][3][1] = 58693;
	E[0][3][2] = 46095;
	E[0][4][0] = 28834;
	E[0][4][1] = 25463;
	E[0][4][2] = 30313;
	E[0][5][0] = 17656;
	E[0][5][1] = 18072;
	E[0][5][2] = 26567;
	E[0][6][0] = 18009;
	E[0][6][1] = 20254;
	E[0][6][2] = 64452;
	E[0][7][0] = 19110;
	E[0][7][1] = 35666;
	E[0][7][2] = 74118;
	E[0][8][0] = 19546;
	E[0][8][1] = 88259;
	E[0][8][2] = 46163;
	E[0][9][0] = 19291;
	E[0][9][1] = 95426;
	E[0][9][2] = 15143;
	E[0][10][0] = 15798;
	E[0][10][1] = 28284;
	E[0][10][2] = 9147;
	E[0][11][0] = 21848;
	E[0][11][1] = 20128;
	E[0][11][2] = 8617;
	E[0][12][0] = 17886;
	E[0][12][1] = 13706;
	E[0][12][2] = 8723;
	E[0][13][0] = 7878;
	E[0][13][1] = 8299;
	E[0][13][2] = 8769;
	E[0][14][0] = 5450;
	E[0][14][1] = 6596;
	E[0][14][2] = 9552;
	E[0][15][0] = 5088;
	E[0][15][1] = 7579;
	E[0][15][2] = 10770;
	E[0][16][0] = 5634;
	E[0][16][1] = 12293;
	E[0][16][2] = 10196;
	E[0][17][0] = 7501;
	E[0][17][1] = 17722;
	E[0][17][2] = 11028;
	E[0][18][0] = 17325;
	E[0][18][1] = 17968;
	E[0][18][2] = 11752;
	E[0][19][0] = 33672;
	E[0][19][1] = 19529;
	E[0][19][2] = 14624;
	E[0][20][0] = 25926;
	E[0][20][1] = 26584;
	E[0][20][2] = 16488;
	E[0][21][0] = 29453;
	E[0][21][1] = 32404;
	E[0][21][2] = 23921;
	E[0][22][0] = 32326;
	E[0][22][1] = 33137;
	E[0][22][2] = 39973;
	E[0][23][0] = 36669;
	E[0][23][1] = 35258;
	E[0][23][2] = 49649;
	E[0][24][0] = 29525;
	E[0][24][1] = 34266;
	E[0][24][2] = 44497;
	E[0][25][0] = 32627;
	E[0][25][1] = 44269;
	E[0][25][2] = 49738;
	E[0][26][0] = 59819;
	E[0][26][1] = 78944;
	E[0][26][2] = 63764;
	E[0][27][0] = 111740;
	E[0][27][1] = 175260;
	E[0][27][2] = 122463;
	E[0][28][0] = 214477;
	E[0][28][1] = 236816;
	E[0][28][2] = 244653;
	E[0][29][0] = 343476;
	E[0][29][1] = 216960;
	E[0][29][2] = 271342;
	E[0][30][0] = 288978;
	E[0][30][1] = 287586;
	E[0][30][2] = 178660;
	E[0][31][0] = 388837;
	E[0][31][1] = 150964;
	E[0][31][2] = 124698;
	E[1][0][0] = 28254;
	E[1][0][1] = 24492;
	E[1][0][2] = 50007;
	E[1][1][0] = 54195;
	E[1][1][1] = 30097;
	E[1][1][2] = 99460;
	E[1][2][0] = 55425;
	E[1][2][1] = 49413;
	E[1][2][2] = 156230;
	E[1][3][0] = 62123;
	E[1][3][1] = 63518;
	E[1][3][2] = 184224;
	E[1][4][0] = 71542;
	E[1][4][1] = 64416;
	E[1][4][2] = 199381;
	E[1][5][0] = 80697;
	E[1][5][1] = 69422;
	E[1][5][2] = 182453;
	E[1][6][0] = 89277;
	E[1][6][1] = 78968;
	E[1][6][2] = 146756;
	E[1][7][0] = 93135;
	E[1][7][1] = 92384;
	E[1][7][2] = 115270;
	E[1][8][0] = 92362;
	E[1][8][1] = 105258;
	E[1][8][2] = 90943;
	E[1][9][0] = 91044;
	E[1][9][1] = 113672;
	E[1][9][2] = 72059;
	E[1][10][0] = 88595;
	E[1][10][1] = 115083;
	E[1][10][2] = 57686;
	E[1][11][0] = 83215;
	E[1][11][1] = 112260;
	E[1][11][2] = 45488;
	E[1][12][0] = 78019;
	E[1][12][1] = 107110;
	E[1][12][2] = 35597;
	E[1][13][0] = 73994;
	E[1][13][1] = 96321;
	E[1][13][2] = 28571;
	E[1][14][0] = 69610;
	E[1][14][1] = 84589;
	E[1][14][2] = 24849;
	E[1][15][0] = 67069;
	E[1][15][1] = 73525;
	E[1][15][2] = 24279;
	E[1][16][0] = 64354;
	E[1][16][1] = 64344;
	E[1][16][2] = 24913;
	E[1][17][0] = 60817;
	E[1][17][1] = 55335;
	E[1][17][2] = 25777;
	E[1][18][0] = 57656;
	E[1][18][1] = 48246;
	E[1][18][2] = 25955;
	E[1][19][0] = 53624;
	E[1][19][1] = 43132;
	E[1][19][2] = 27253;
	E[1][20][0] = 49562;
	E[1][20][1] = 41837;
	E[1][20][2] = 24190;
	E[1][21][0] = 43361;
	E[1][21][1] = 48260;
	E[1][21][2] = 23928;
	E[1][22][0] = 41166;
	E[1][22][1] = 56576;
	E[1][22][2] = 23136;
	E[1][23][0] = 42909;
	E[1][23][1] = 41479;
	E[1][23][2] = 14888;
	E[1][24][0] = 42004;
	E[1][24][1] = 26355;
	E[1][24][2] = 9229;
	E[1][25][0] = 39078;
	E[1][25][1] = 18659;
	E[1][25][2] = 8884;
	E[1][26][0] = 30332;
	E[1][26][1] = 13395;
	E[1][26][2] = 13117;
	E[1][27][0] = 17132;
	E[1][27][1] = 11763;
	E[1][27][2] = 15209;
	E[1][28][0] = 8822;
	E[1][28][1] = 5607;
	E[1][28][2] = 6722;
	E[1][29][0] = 5587;
	E[1][29][1] = 1060;
	E[1][29][2] = 536;
	E[1][30][0] = 4912;
	E[1][30][1] = 267;
	E[1][30][2] = 8;
	E[1][31][0] = 17128;
	E[1][31][1] = 157;
	E[1][31][2] = 2;
	E[2][0][0] = 6008;
	E[2][0][1] = 10417;
	E[2][0][2] = 60667;
	E[2][1][0] = 11062;
	E[2][1][1] = 15252;
	E[2][1][2] = 39132;
	E[2][2][0] = 15091;
	E[2][2][1] = 22157;
	E[2][2][2] = 37743;
	E[2][3][0] = 20264;
	E[2][3][1] = 29553;
	E[2][3][2] = 37446;
	E[2][4][0] = 30565;
	E[2][4][1] = 34831;
	E[2][4][2] = 40374;
	E[2][5][0] = 38210;
	E[2][5][1] = 38338;
	E[2][5][2] = 42992;
	E[2][6][0] = 40638;
	E[2][6][1] = 40989;
	E[2][6][2] = 44991;
	E[2][7][0] = 41336;
	E[2][7][1] = 43141;
	E[2][7][2] = 46922;
	E[2][8][0] = 42770;
	E[2][8][1] = 45525;
	E[2][8][2] = 49462;
	E[2][9][0] = 44566;
	E[2][9][1] = 49131;
	E[2][9][2] = 51498;
	E[2][10][0] = 46193;
	E[2][10][1] = 52216;
	E[2][10][2] = 53320;
	E[2][11][0] = 46488;
	E[2][11][1] = 54848;
	E[2][11][2] = 55267;
	E[2][12][0] = 46069;
	E[2][12][1] = 56189;
	E[2][12][2] = 57146;
	E[2][13][0] = 45924;
	E[2][13][1] = 58717;
	E[2][13][2] = 57996;
	E[2][14][0] = 46329;
	E[2][14][1] = 56813;
	E[2][14][2] = 57930;
	E[2][15][0] = 46433;
	E[2][15][1] = 53318;
	E[2][15][2] = 57038;
	E[2][16][0] = 45823;
	E[2][16][1] = 50087;
	E[2][16][2] = 54722;
	E[2][17][0] = 44960;
	E[2][17][1] = 48355;
	E[2][17][2] = 51816;
	E[2][18][0] = 43938;
	E[2][18][1] = 46896;
	E[2][18][2] = 49522;
	E[2][19][0] = 43547;
	E[2][19][1] = 45000;
	E[2][19][2] = 46822;
	E[2][20][0] = 43642;
	E[2][20][1] = 43678;
	E[2][20][2] = 44616;
	E[2][21][0] = 43542;
	E[2][21][1] = 42531;
	E[2][21][2] = 43126;
	E[2][22][0] = 43977;
	E[2][22][1] = 42697;
	E[2][22][2] = 40687;
	E[2][23][0] = 44478;
	E[2][23][1] = 41948;
	E[2][23][2] = 38622;
	E[2][24][0] = 43787;
	E[2][24][1] = 40098;
	E[2][24][2] = 38447;
	E[2][25][0] = 43555;
	E[2][25][1] = 38412;
	E[2][25][2] = 39505;
	E[2][26][0] = 43648;
	E[2][26][1] = 37966;
	E[2][26][2] = 36984;
	E[2][27][0] = 43778;
	E[2][27][1] = 37932;
	E[2][27][2] = 24710;
	E[2][28][0] = 45234;
	E[2][28][1] = 40187;
	E[2][28][2] = 16955;
	E[2][29][0] = 50233;
	E[2][29][1] = 46502;
	E[2][29][2] = 9663;
	E[2][30][0] = 56893;
	E[2][30][1] = 49419;
	E[2][30][2] = 5031;
	E[2][31][0] = 84519;
	E[2][31][1] = 20357;
	E[2][31][2] = 2348;
	E[3][0][0] = 6656;
	E[3][0][1] = 107616;
	E[3][0][2] = 261596;
	E[3][1][0] = 8531;
	E[3][1][1] = 17082;
	E[3][1][2] = 161437;
	E[3][2][0] = 43444;
	E[3][2][1] = 85739;
	E[3][2][2] = 116308;
	E[3][3][0] = 56843;
	E[3][3][1] = 151365;
	E[3][3][2] = 123634;
	E[3][4][0] = 69781;
	E[3][4][1] = 71226;
	E[3][4][2] = 58738;
	E[3][5][0] = 49525;
	E[3][5][1] = 50532;
	E[3][5][2] = 57180;
	E[3][6][0] = 60769;
	E[3][6][1] = 66482;
	E[3][6][2] = 99036;
	E[3][7][0] = 42204;
	E[3][7][1] = 71059;
	E[3][7][2] = 99218;
	E[3][8][0] = 25382;
	E[3][8][1] = 56550;
	E[3][8][2] = 85941;
	E[3][9][0] = 24826;
	E[3][9][1] = 66462;
	E[3][9][2] = 49008;
	E[3][10][0] = 26969;
	E[3][10][1] = 34997;
	E[3][10][2] = 37309;
	E[3][11][0] = 36934;
	E[3][11][1] = 26077;
	E[3][11][2] = 32062;
	E[3][12][0] = 44072;
	E[3][12][1] = 96126;
	E[3][12][2] = 24254;
	E[3][13][0] = 18257;
	E[3][13][1] = 63770;
	E[3][13][2] = 16851;
	E[3][14][0] = 3536;
	E[3][14][1] = 40606;
	E[3][14][2] = 14947;
	E[3][15][0] = 1474;
	E[3][15][1] = 54175;
	E[3][15][2] = 13226;
	E[3][16][0] = 1422;
	E[3][16][1] = 40128;
	E[3][16][2] = 9786;
	E[3][17][0] = 1796;
	E[3][17][1] = 27310;
	E[3][17][2] = 12275;
	E[3][18][0] = 3571;
	E[3][18][1] = 32224;
	E[3][18][2] = 40968;
	E[3][19][0] = 11752;
	E[3][19][1] = 32730;
	E[3][19][2] = 59573;
	E[3][20][0] = 48550;
	E[3][20][1] = 36922;
	E[3][20][2] = 15418;
	E[3][21][0] = 70209;
	E[3][21][1] = 30559;
	E[3][21][2] = 11387;
	E[3][22][0] = 72870;
	E[3][22][1] = 41712;
	E[3][22][2] = 8487;
	E[3][23][0] = 67964;
	E[3][23][1] = 47670;
	E[3][23][2] = 7145;
	E[3][24][0] = 100495;
	E[3][24][1] = 25890;
	E[3][24][2] = 8511;
	E[3][25][0] = 40674;
	E[3][25][1] = 8565;
	E[3][25][2] = 8944;
	E[3][26][0] = 90081;
	E[3][26][1] = 2653;
	E[3][26][2] = 8584;
	E[3][27][0] = 126626;
	E[3][27][1] = 2863;
	E[3][27][2] = 6505;
	E[3][28][0] = 133305;
	E[3][28][1] = 4234;
	E[3][28][2] = 4899;
	E[3][29][0] = 55491;
	E[3][29][1] = 5323;
	E[3][29][2] = 5723;
	E[3][30][0] = 29421;
	E[3][30][1] = 7331;
	E[3][30][2] = 8441;
	E[3][31][0] = 99570;
	E[3][31][1] = 67022;
	E[3][31][2] = 5609;
	for (int i = 0; i < BLOCK_CNT; i++) {
		for (int j = 0; j < 3; j++) {
			A[i][j] = 0;
		}
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			A[R[i][j] / BLOCK_SIZE][0]++;
			A[G[i][j] / BLOCK_SIZE][1]++;
			A[B[i][j] / BLOCK_SIZE][2]++;
		}
	}
	pair<long double, int> res = make_pair(1e18L, -1);
	for (int X = 0; X < 4; X++) {
		long double score = 0.0L;
		for (int i = 0; i < 3; i++) {
			int totA = 0;
			int totE = 0;
			for (int j = 0; j < BLOCK_CNT; j++) {
				totA += A[j][i];
				totE += E[X][j][i];
			}
			for (int j = 0; j < BLOCK_CNT; j++) {
				long double exp = 1.0L * E[X][j][i] / totE * totA;
				score += (exp - A[j][i]) * (exp - A[j][i]) / exp; 
			}
		}
		res = min(res, make_pair(score, X + 1));
	}
	return res.second;
}
#Verdict Execution timeMemoryGrader output
Fetching results...