Submission #2414211
Source Code Expand
#include <iostream> #include <vector> using namespace std; long long a[5][5], dp[1 << 22], mod = 1000000007; bool used[26]; vector<int>G; vector<pair<int, int>>s; pair<int, int>Z[26]; int main() { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { cin >> a[i][j]; Z[a[i][j]] = make_pair(i, j); if (a[i][j] == 0) s.push_back(make_pair(i, j)); used[a[i][j]] = true; } } for (int i = 1; i <= 25; i++) { if (used[i] == false) G.push_back(i); } dp[0] = 1; for (int i = 0; i < (1 << G.size()); i++) { int c[5][5], cnt = 0; for (int j = 0; j < 5; j++) { for (int k = 0; k < 5; k++) { c[j][k] = a[j][k]; if (c[j][k] == 0) c[j][k] = 26; } } for (int j = 0; j < G.size(); j++) { if ((i / (1 << j)) % 2 == 1) { c[s[j].first][s[j].second] = 0; cnt++; } } int L1 = 1, L2 = 25; if (cnt >= 1) L1 = G[cnt - 1] + 1; if (cnt < G.size()) L2 = G[cnt] - 1; for (int l = L1; l <= L2; l++) { int j = Z[l].first, k = Z[l].second; if (j >= 1 && j <= 3) { if (((c[j - 1][k] <= l) ^ (l >= c[j + 1][k])) == true) dp[i] = 0; } if (k >= 1 && k <= 3) { if (((c[j][k - 1] <= l) ^ (l >= c[j][k + 1])) == true) dp[i] = 0; } } for (int l = 0; l < s.size(); l++) { int j = s[l].first, k = s[l].second; if (c[j][k] != 26) continue; if (j >= 1 && j <= 3) { if (((c[j - 1][k] <= G[cnt]) ^ (G[cnt] >= c[j + 1][k])) == true) continue; } if (k >= 1 && k <= 3) { if (((c[j][k - 1] <= G[cnt]) ^ (G[cnt] >= c[j][k + 1])) == true) continue; } dp[i + (1 << l)] += dp[i]; dp[i + (1 << l)] %= mod; } } cout << dp[(1 << s.size()) - 1] << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - 25個の整数 |
User | E869120 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1643 Byte |
Status | AC |
Exec Time | 479 ms |
Memory | 10496 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 30 / 30 | 70 / 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 | 1 ms | 256 KB |
sample-02.txt | AC | 1 ms | 256 KB |
sample-03.txt | AC | 1 ms | 256 KB |
sample-04.txt | AC | 1 ms | 256 KB |
test-1-01.txt | AC | 1 ms | 256 KB |
test-1-02.txt | AC | 1 ms | 256 KB |
test-1-03.txt | AC | 1 ms | 256 KB |
test-1-04.txt | AC | 1 ms | 256 KB |
test-1-05.txt | AC | 1 ms | 256 KB |
test-1-06.txt | AC | 1 ms | 256 KB |
test-1-07.txt | AC | 1 ms | 256 KB |
test-1-08.txt | AC | 1 ms | 256 KB |
test-1-09.txt | AC | 1 ms | 256 KB |
test-1-10.txt | AC | 1 ms | 256 KB |
test-1-11.txt | AC | 1 ms | 256 KB |
test-1-12.txt | AC | 1 ms | 256 KB |
test-1-13.txt | AC | 1 ms | 256 KB |
test-1-14.txt | AC | 1 ms | 256 KB |
test-1-15.txt | AC | 1 ms | 256 KB |
test-2-01.txt | AC | 15 ms | 512 KB |
test-2-02.txt | AC | 4 ms | 256 KB |
test-2-03.txt | AC | 3 ms | 256 KB |
test-2-04.txt | AC | 29 ms | 768 KB |
test-2-05.txt | AC | 56 ms | 1280 KB |
test-2-06.txt | AC | 474 ms | 10496 KB |
test-2-07.txt | AC | 460 ms | 10496 KB |
test-2-08.txt | AC | 466 ms | 10496 KB |
test-2-09.txt | AC | 479 ms | 10496 KB |
test-2-10.txt | AC | 467 ms | 10496 KB |