| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1313906 | kawhiet | Art Class (IOI13_artclass) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "artclass.h"
using namespace std;
int n, m;
vector<vector<int>> r, g, b;
double get(double tot, double cnt) {
return 100.0 / tot * cnt;
}
bool field() {
int bad = 0;
for (int i = 0; i < n; i++) {
int cnt = 1, mx = 1;
vector<int> v;
for (int j = 1; j < m; j++) {
int d1 = abs(r[i][j] - r[i][j - 1]);
int d2 = abs(g[i][j] - g[i][j - 1]);
int d3 = abs(b[i][j] - b[i][j - 1]);
if (max({d1, d2, d3}) > 22) {
cnt = 1;
v.push_back(cnt);
} else {
cnt++;
}
mx = max(mx, cnt);
}
v.push_back(cnt);
bool ok = 1;
int sz = v.size();
for (int i = 0; i < sz / 7; i++) {
if (v[i] == mx) ok = 0;
if (v[sz - i - 1] == mx) ok = 0;
}
if (get(m, mx) < 40 || !ok) {
i += 4;
bad++;
}
}
cerr << bad << ' ';
return bad <= n / 47;
}
bool action() {
return false;
}
int landscape() {
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int x = r[i][j], y = g[i][j], z = b[i][j];
if (z == min({x, y, z}) && double(y) / double(z) >= 1.5) {
cnt++;
}
}
}
double p = 100.0 / double(n * m) * double(cnt);
return p >= 40;
}
bool modern() {
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int x = r[i][j], y = b[i][j], z = g[i][j];
int mn = min({x, y, z});
int mx = max({x, y, z});
if (min({x, y, z}) >= 180 && mx - mn <= 30) {
cnt++;
}
}
}
double p = get(n * m, cnt);
return p >= 18;
}
int style(int _n, int _m, int _r[500][500], int _g[500][500], int _b[500][500]) {
n = _n; m = _m;
r.assign(n, vector<int>(m, 0));
b.assign(n, vector<int>(m, 0));
g.assign(n, vector<int>(m, 0));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
r[i][j] = _r[i][j];
g[i][j] = _g[i][j];
b[i][j] = _b[i][j];
}
}
if (field()) return 4;
if (modern()) return 1;
if (landscape()) return 2;
return 3;
}
int R[500][500], G[500][500], B[500][500];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tt = 36;
// cin >> tt;
while (tt--) {
for (int i = 0; i < 500; i++) {
for (int j = 0; j < 500; j++) {
R[i][j] = B[i][j] = G[i][j] = 0;
}
}
int N, M;
cin >> N >> M;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> R[i][j] >> G[i][j] >> B[i][j];
}
}
cout << style(N, M, R, G, B) << ' ';
if (tt % 9 == 0) {
cout << '\n';
cerr << '\n';
}
}
return 0;
}
