제출 #1313895

#제출 시각아이디문제언어결과실행 시간메모리
1313895kawhiet미술 수업 (IOI13_artclass)C++20
74 / 100
42 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; 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}) > m / 24) { v.push_back(cnt); cnt = 1; } else { cnt++; } } v.push_back(cnt); bool ok = 1; int sz = v.size(); int l = 0, r = 0; int pos = -1, mx = ranges::max(v); for (int i = 0; i < sz; i++) { if (v[i] == mx) { l = i; break; } } for (int i = sz - 1; i >= 0; i--) { if (v[i] == mx) { r = i; break; } } pos = (l + r) / 2; int left = 0; for (int i = 0; i < pos; i++) { left += v[i]; } int right = 0; for (int i = pos + 1; i < sz; i++) { right += v[i]; } // 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 || abs(right - left) > 80) { i += 4; bad++; } } return bad <= n / 30; } 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...