Submission #433450


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

const int R = 5;
const int C = 5;

int x[R][C];
int used[30], used2[30];
int ans;

void rec(int i, int j) {
  if(j == C) ++i, j = 0;
  if(i == R) {
    ++ans; return;
  }
  int l = 1, r = 25;
  if(j >= 2) {
    if(x[i][j-2] < x[i][j-1]) r = x[i][j-1] - 1;
    else l = x[i][j-1] + 1;
  }
  if(i >= 2) {
    if(x[i-2][j] < x[i-1][j]) r = min(r, x[i-1][j] - 1);
    else l = max(l, x[i-1][j] + 1);
  }
  if(x[i][j]) l = max(l, x[i][j]), r = min(r, x[i][j]);
  for(int k = l; k <= r; ++k) {
    if(x[i][j] != k && used2[k]) continue;
    if(used[k]) continue;
    int tmp = x[i][j];
    x[i][j] = k;
    used[k] = 1;
    bool flag = false;
    if(i == 0 || i+1 == R) {
      flag = true;
    } else {
      int nl = 1, nr = 25;
      if(x[i-1][j] < x[i][j]) nr = x[i][j] - 1;
      else nl = x[i][j] + 1;
      if(x[i+1][j]) nl = max(nl, x[i+1][j]),nr = min(nr, x[i+1][j]);
      for(int d = nl; d <= nr; ++d) {
        if(!used[d]) {
          flag = true;
          break;
        }
      }
    }
    if(flag) rec(i, j+1);
    x[i][j] = tmp;
    used[k] = 0;
  }
}

int main() {
  memset(used2, 0, sizeof(used2));
  for(int i = 0; i < R; ++i) {
    for(int j = 0; j < C; ++j) {
      cin >> x[i][j];
      used2[x[i][j]] = 1;
    }
  }
  memset(used, 0, sizeof(used));
  ans = 0;
  rec(0, 0);
  cout << ans << endl;
  return 0;
}

Submission Info

Submission Time
Task D - 25個の整数
User zukky
Language C++ (GCC 4.9.2)
Score 30
Code Size 1442 Byte
Status TLE
Exec Time 5033 ms
Memory 932 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 0 / 70
Status
AC × 4
AC × 19
AC × 20
TLE × 9
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt
Subtask1 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, test-1-01.txt, test-1-02.txt, test-1-03.txt, test-1-04.txt, test-1-05.txt, test-1-06.txt, test-1-07.txt, test-1-08.txt, test-1-09.txt, test-1-10.txt, test-1-11.txt, test-1-12.txt, test-1-13.txt, test-1-14.txt, test-1-15.txt
Subtask2 sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, test-1-01.txt, test-1-02.txt, test-1-03.txt, test-1-04.txt, test-1-05.txt, test-1-06.txt, test-1-07.txt, test-1-08.txt, test-1-09.txt, test-1-10.txt, test-1-11.txt, test-1-12.txt, test-1-13.txt, test-1-14.txt, test-1-15.txt, test-2-01.txt, test-2-02.txt, test-2-03.txt, test-2-04.txt, test-2-05.txt, test-2-06.txt, test-2-07.txt, test-2-08.txt, test-2-09.txt, test-2-10.txt
Case Name Status Exec Time Memory
sample-01.txt AC 23 ms 924 KB
sample-02.txt AC 33 ms 736 KB
sample-03.txt AC 25 ms 924 KB
sample-04.txt AC 23 ms 808 KB
test-1-01.txt AC 22 ms 924 KB
test-1-02.txt AC 24 ms 800 KB
test-1-03.txt AC 24 ms 800 KB
test-1-04.txt AC 22 ms 924 KB
test-1-05.txt AC 22 ms 796 KB
test-1-06.txt AC 24 ms 716 KB
test-1-07.txt AC 22 ms 804 KB
test-1-08.txt AC 22 ms 800 KB
test-1-09.txt AC 22 ms 672 KB
test-1-10.txt AC 22 ms 920 KB
test-1-11.txt AC 23 ms 796 KB
test-1-12.txt AC 23 ms 672 KB
test-1-13.txt AC 24 ms 928 KB
test-1-14.txt AC 24 ms 928 KB
test-1-15.txt AC 24 ms 928 KB
test-2-01.txt TLE 5032 ms 804 KB
test-2-02.txt TLE 5032 ms 800 KB
test-2-03.txt AC 511 ms 792 KB
test-2-04.txt TLE 5033 ms 932 KB
test-2-05.txt TLE 5032 ms 808 KB
test-2-06.txt TLE 5030 ms 804 KB
test-2-07.txt TLE 5032 ms 928 KB
test-2-08.txt TLE 5032 ms 932 KB
test-2-09.txt TLE 5032 ms 928 KB
test-2-10.txt TLE 5033 ms 800 KB