#include <bits/stdc++.h>
#include "artclass.h"
using namespace std;
const int T = 1000;
int N, M, comp;
int r0, g0, b0;
int V[502][502];
int R[502][502], G[502][502], B[502][502];
int di[8] = {-1, +0, +1, +0, -1, -1, +1, +1};
int dj[8] = {+0, -1, +0, +1, -1, +1, +1, -1};
inline int sqr(int x) {return x * x;}
inline int dist(int r1, int g1, int b1, int r2, int g2, int b2) {return sqr(r1 - r2) + sqr(g1 - g2) + sqr(b1 - b2);}
inline void DFS(int i, int j)
{
V[i][j] = comp;
// for(int k = 0; k < 8; k++)
for(int k = 0; k < 4; k++)
{
if(V[i + di[k]][j + dj[k]]) continue;
if(dist(R[i][j], G[i][j], B[i][j], R[i + di[k]][j + dj[k]], G[i + di[k]][j + dj[k]], B[i + di[k]][j + dj[k]]) > T) continue;
// if(dist(r0, g0, b0, R[i + di[k]][j + dj[k]], G[i + di[k]][j + dj[k]], B[i + di[k]][j + dj[k]]) > T) continue;
DFS(i + di[k], j + dj[k]);
}
return;
}
int style(int n, int m, int r[500][500], int g[500][500], int b[500][500])
{
N = n;
M = m;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
R[i][j] = r[i - 1][j - 1];
G[i][j] = g[i - 1][j - 1];
B[i][j] = b[i - 1][j - 1];
}
}
for(int i = N + 1; i >= 0; i--) V[i][0] = V[i][M + 1] = -1;
for(int j = M + 1; j >= 0; j--) V[0][j] = V[N + 1][j] = -1;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
if(V[i][j]) continue;
comp++;
r0 = R[i][j];
g0 = G[i][j];
b0 = B[i][j];
// cout << r0 << ' ' << g0 << ' ' << b0 << '\n';
DFS(i, j);
}
}
// cout << comp << '\n';
if(comp <= 10) return 4;
if(comp <= 70) return 1;
if(comp <= 100) return 2;
return 3;
exit(333);
}
//int n, m, r[500][500], g[500][500], b[500][500];
//int main()
//{
// freopen("style-1-1.txt", "r", stdin);
//// ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
// cin >> n >> m;
// for(int i = 0; i < n; i++)
// {
// for(int j = 0; j < m; j++) cin >> r[i][j] >> b[i][j] >> b[i][j];
// }
// cout << style(n, m, r, g, b) << '\n';
// return 0;
//}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |