Submission #38510

#TimeUsernameProblemLanguageResultExecution timeMemory
38510funcsrArt Class (IOI13_artclass)C++14
100 / 100
262 ms9576 KiB
#include "artclass.h" #include <cmath> #include <iostream> #include <algorithm> #include <vector> #include <set> #include <queue> #include <string> #include <cassert> #include <tuple> using namespace std; typedef pair<int, int> P; #define rep(i, n) for (int i=0; i<(n); i++) #define all(x) x.begin(), x.end() #define uniq(x) x.erase(unique(all(x)), x.end()) #define pb push_back #define INF 1005141919 #define _1 first #define _2 second int W, H; int A[500][500]; vector<long long> f(int C) { vector<long long> ret; rep(lx, W-C+1) { rep(ly, H-C+1) { int avg = 0; for (int x=lx; x<lx+C; x++) { for (int y=ly; y<ly+C; y++) { avg += A[x][y]; } } avg /= C*C; long long s = 0; for (int x=lx; x<lx+C; x++) { for (int y=ly; y<ly+C; y++) { s += 1LL*(A[x][y]-avg)*(A[x][y]-avg); } } s /= C*C; ret.pb(s); } } sort(all(ret)); return ret; } int style(int HH, int WW, int R[500][500], int G[500][500], int B[500][500]) { W = WW, H = HH; rep(x, W) rep(y, H) A[x][y] = R[y][x]+G[y][x]+B[y][x]; vector<long long> a = f(3); long long avg = 0; for (long long x : a) avg += x; avg /= a.size(); if (log2(avg) <= 9) return 4; if (log2(a[a.size()/2]) <= 8) return 1; a = f(10); avg = 0; for (long long x : a) avg += x; avg /= a.size(); if (log2(avg) <= 13) return 2; return 3; }
#Verdict Execution timeMemoryGrader output
Fetching results...