Submission #434072
Source Code Expand
#include <cstdio>
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <sstream>
#include <algorithm>
#include <functional>
#include <queue>
#include <stack>
#include <cmath>
#include <iomanip>
#include <list>
#include <tuple>
#include <bitset>
#include <ciso646>
using namespace std;
inline bool cheak(int x, int y, int xMax, int yMax){ return x >= 0 && y >= 0 && xMax > x && yMax > y; }
inline int toInt(string s) { int v; istringstream sin(s); sin >> v; return v; }
template<class T> inline string toString(T x) { ostringstream sout; sout << x; return sout.str(); }
template<class T> inline T sqr(T x) { return x*x; }
typedef pair<int, int> P;
typedef tuple<int, int, int> T;
typedef long long ll;
typedef unsigned long long ull;
#define For(i,a,b) for(int (i) = (a);i < (b);(i)++)
#define rep(i,n) For(i,0,n)
#define clr(a) memset((a), 0 ,sizeof(a))
#define mclr(a) memset((a), -1 ,sizeof(a))
#define all(a) (a).begin(),(a).end()
#define sz(a) (sizeof(a))
#define Fill(a,v) fill((int*)a,(int*)(a+(sz(a)/sz(*(a)))),v)
const int dx[8] = { 1, 0, -1, 0, 1, 1, -1, -1 }, dy[8] = { 0, -1, 0, 1, -1, 1, -1, 1 };
const int mod = 1000000007;
const int INF = 1e9;
int d[5][5];
int m[26];
int dfs(int y,int x){
int ret = 0;
For(i, 1, 26){
if (!m[i]){
if (y > 0 && y < 4){
if (d[y - 1][x] != 0 && d[y + 1][x] != 0)
if (d[y - 1][x] < i && i < d[y + 1][x])continue;
if (d[y - 1][x] > i && i > d[y + 1][x])continue;
}
if (x > 0 && x < 4){
if (d[y][x - 1] != 0 && d[y][x + 1] != 0)
if (d[y][x - 1] < i && i < d[y][x + 1])continue;
if (d[y][x - 1] > i && i > d[y][x + 1])continue;
}
if (y > 1 && y < 5){
if (d[y - 2][x] != 0 && d[y - 1][x] != 0)
if (d[y - 2][x] < d[y - 1][x] && d[y - 1][x] < i)continue;
if (d[y - 2][x] > d[y - 1][x] && d[y - 1][x] > i)continue;
}
if (x > 1 && x < 5){
if (d[y][x - 2] != 0 && d[y][x - 1] != 0)
if (d[y][x - 2] < d[y][x - 1] && d[y][x - 1] < i)continue;
if (d[y][x - 2] > d[y][x - 1] && d[y][x - 1] > i)continue;
}
if (y >= 0 && y < 3){
if (d[y + 2][x] != 0 && d[y + 1][x] != 0)
if (d[y + 2][x] < d[y + 1][x] && d[y + 1][x] < i)continue;
if (d[y + 2][x] > d[y + 1][x] && d[y + 1][x] > i)continue;
}
if (x >= 0 && x < 3){
if (d[y][x + 2] != 0 && d[y][x + 1] != 0)
if (d[y][x + 2] < d[y][x + 1] && d[y][x + 1] < i)continue;
if (d[y][x + 2] > d[y][x + 1] && d[y][x + 1] > i)continue;
}
d[y][x] = i;
m[i] = 1;
bool f = true;
For(j,0, 5)For(k,0, 5){
if (d[j][k] == 0){
f = false;
ret += dfs(j, k);
goto BREAK;
}
}
BREAK:;
if (f)
ret++;
m[i] = 0;
d[y][x] = 0;
}
}
return ret;
}
int main()
{
int T = 0;
rep(i, 5)rep(j, 5){
cin >> d[i][j];
if (d[i][j]){
m[d[i][j]] = 1;
T++;
}
}
ll sum0 = 1;
For(i, 1, 26){
sum0 = (sum0 * i) % mod;
}
int sum1 = 0;
rep(i, 5)rep(j, 5){
if (d[i][j] == 0){
sum1 = dfs(i, j) % mod;
break;
}
}
int sum = sum0 - sum1;
int ans = ((sum % mod) < 0 ? (sum % mod + mod) : (sum % mod));
if (T == 25)sum1 = 1;
cout << sum1 << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
D - 25個の整数 |
User |
omu |
Language |
C++11 (GCC 4.9.2) |
Score |
0 |
Code Size |
3299 Byte |
Status |
WA |
Exec Time |
5033 ms |
Memory |
928 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Score / Max Score |
0 / 0 |
0 / 30 |
0 / 70 |
Status |
|
|
|
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 |
808 KB |
sample-02.txt |
AC |
59 ms |
800 KB |
sample-03.txt |
AC |
24 ms |
804 KB |
sample-04.txt |
AC |
23 ms |
924 KB |
test-1-01.txt |
AC |
22 ms |
800 KB |
test-1-02.txt |
AC |
24 ms |
672 KB |
test-1-03.txt |
WA |
24 ms |
924 KB |
test-1-04.txt |
WA |
22 ms |
792 KB |
test-1-05.txt |
WA |
22 ms |
796 KB |
test-1-06.txt |
AC |
27 ms |
916 KB |
test-1-07.txt |
AC |
24 ms |
700 KB |
test-1-08.txt |
WA |
23 ms |
924 KB |
test-1-09.txt |
WA |
24 ms |
804 KB |
test-1-10.txt |
AC |
24 ms |
920 KB |
test-1-11.txt |
AC |
24 ms |
800 KB |
test-1-12.txt |
WA |
25 ms |
924 KB |
test-1-13.txt |
AC |
25 ms |
800 KB |
test-1-14.txt |
WA |
25 ms |
796 KB |
test-1-15.txt |
AC |
26 ms |
808 KB |
test-2-01.txt |
WA |
154 ms |
792 KB |
test-2-02.txt |
WA |
144 ms |
804 KB |
test-2-03.txt |
WA |
23 ms |
928 KB |
test-2-04.txt |
WA |
448 ms |
800 KB |
test-2-05.txt |
WA |
2492 ms |
792 KB |
test-2-06.txt |
TLE |
5032 ms |
816 KB |
test-2-07.txt |
WA |
24 ms |
796 KB |
test-2-08.txt |
TLE |
5033 ms |
800 KB |
test-2-09.txt |
WA |
29 ms |
776 KB |
test-2-10.txt |
WA |
26 ms |
804 KB |