Submission #1260476

#TimeUsernameProblemLanguageResultExecution timeMemory
1260476repmannArt Class (IOI13_artclass)C++20
19 / 100
39 ms17992 KiB
#include <bits/stdc++.h>
#include "artclass.h"
using namespace std;
const int T = 10000;
int N, M, comp;
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 < 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;
    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++;
      DFS(i, j);
    }
  }
  if(comp <= 10) return 4;
  if(comp <= 30) return 1;
  if(comp <= 100) return 2;
  return 3;
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...