제출 #1313821

#제출 시각아이디문제언어결과실행 시간메모리
1313821kawhiet미술 수업 (IOI13_artclass)C++20
87 / 100
33 ms6232 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, d2}) > 30) { 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 / 4; i++) { if (v[i] == mx) ok = 0; if (v[sz - i - 1] == mx) ok = 0; } if (get(m, mx) < 40 || !ok) { i += 2; bad++; } } cerr << bad << ' '; return bad <= 8; } 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 <= 40) { cnt++; } } } double p = get(n * m, cnt); return p >= 20; } 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...