제출 #667887

#제출 시각아이디문제언어결과실행 시간메모리
667887600Mihnea보물 찾기 (CEOI13_treasure2)C++17
44 / 100
1 ms512 KiB
#include "treasure.h"
#include <bits/stdc++.h>

using namespace std;

const int N = 100 + 7;
int s[4][N][N], s2[N][N];
bool deja = 0;
bool ok;
int n;


int get(int type, int r, int c)
{
  if (type == 0)
  {
    if (r <= 0 || c <= 0)
    {
      return 0;
    }
    ok &= (s[type][r][c] != -1);
    return s[type][r][c];
  }

  assert(0);
}

int what(int r, int c)
{
  ok = 1;
  int sm;
  sm = get(0, r, c) - get(0, r - 1, c) - get(0, r, c - 1) + get(0, r - 1, c - 1);

  if (ok)
  {
    return sm;
  }
  assert(0);
}



void findTreasure(int nn)
{
  n = nn;
  for (int k = 0; k < 4; k++)
  {
    for (int i = 0; i < N; i++)
    {
      for (int j = 0; j < N; j++)
      {
        s[k][i][j] = -1;
      }
    }
  }
  assert(deja == 0);
  deja = 1;
  for (int i = 1; i <= n; i++)
  {
    for (int j = 1; j <= n; j++)
    {
      s[0][i][j] = countTreasure(1, 1, i, j);
    }
  }
  for (int i = 1; i <= n; i++)
  {
    for (int j = 1; j <= n; j++)
    {
      if (what(i, j))
      {
        Report(i, j);
      }
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...