| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1313686 | kawhiet | 미술 수업 (IOI13_artclass) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "artclass.h"
using namespace std;
mt19937 rng((uint32_t)chrono::steady_clock::now().time_since_epoch().count());
int is_4(int n, int m, int r[500][500], int g[500][500], int b[500][500]) {
int bad = 0;
for (int i = 1; i < n; i++) {
int cnt = 1, mx = 1;
for (int j = 1; j < m; j++) {
int dist_r = abs(r[i][j] - r[i - 1][j]);
int dist_g = abs(g[i][j] - g[i - 1][j]);
int dist_b = abs(b[i][j] - b[i - 1][j]);
if (max({dist_r, dist_b, dist_g}) > 20) {
cnt = 1;
} else {
cnt++;
}
mx = max(mx, cnt);
}
double p = 100.0 / double(m) * double(cnt);
if (p <= 50) {
bad++;
i += 5;
}
}
cerr << bad << '\n';
if (bad >= 30) {
return false;
} else {
return true;
}
}
int is_2(int n, int m, int r[500][500], int g[500][500], int b[500][500]) {
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 (y > max(x, z) + 10 || (abs(y - z) <= 10 && x <= 30) || ((abs(x - y) <= 10 && z <= 30))) {
cnt++;
}
}
}
double p = 100.0 / double(n * m) * double(cnt);
// cerr << p << ' ';
if (9 <= p && p <= 80) {
return true;
} else {
return false;
}
}
int is_3(int n, int m, int r[500][500], int g[500][500], int b[500][500]) {
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < m; j++) {
int sum = abs(r[i][j] - r[i][j - 1]);
sum += abs(g[i][j] - g[i][j - 1]);
sum += abs(b[i][j] - b[i][j - 1]);
if (sum >= 40) {
cnt++;
}
}
}
if (cnt >= 100) {
return true;
} else {
return false;
}
}
int style(int n, int m, int r[500][500], int g[500][500], int b[500][500]) {
if (is_4(n, m, r, g, b)) return 4;
return 1;
// if (is_2(n, m, r, g, b)) return 2;
// if (is_3(n, m, r, g, b)) return 3;
// return 1;
}
int R[500][500], G[500][500], B[500][500];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tt = 9;
// 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) << '\n';
}
return 0;
}
