Submission #3043444


Source Code Expand

#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <deque>
#include <complex>
#include <stack>
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <ctime>
#include <iterator>
#include <bitset>
#include <numeric>
#include <list>
#include <iomanip>
using namespace std;


typedef long long LL;
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;

typedef vector<int> vint;
typedef vector<vector<int> > vvint;
typedef vector<long long> vll, vLL;
typedef vector<vector<long long> > vvll, vvLL;

#define VV(T) vector<vector< T > >

template <class T>
void initvv(vector<vector<T> > &v, int a, int b, const T &t = T()){
	v.assign(a, vector<T>(b, t));
}

template <class F, class T>
void convert(const F &f, T &t){
	stringstream ss;
	ss << f;
	ss >> t;
}


#define REP(i,n) for(int i=0;i<int(n);++i)
#define ALL(v) (v).begin(),(v).end()
#define RALL(v) (v).rbegin(),(v).rend()
#define PB push


#define MOD 1000000007LL
#define EPS 1e-8

int x[ 25 ];
int fix[ 26 ];
int dp[ 1 << 25 ];
vector<int> V;

int main()
{
	REP( i, 26 ) fix[ i ] = -1;
	REP( i, 25 )
	{
		cin >> x[ i ];
		if( x[ i ] == 0 ) V.push_back( i );
		else fix[ x[ i ] ] = i;
	}

	dp[ 0 ] = 1;

	for( int bits = 0; bits <= ( 1 << 25 ) - 1; ++bits )
	{
		if( dp[ bits ] )
		{
			int nextNum = __builtin_popcount( bits ) + 1;
			vector<int> v;
			if( fix[ nextNum ] >= 0 ) v.push_back( fix[ nextNum ] );
			else v = V;
			for( auto p : v )
			{
				if( ( bits & ( 1 << p ) ) == 0 )
				{
					int y = p / 5;
					int x = p % 5;
					if( y > 0 && y < 4 && ( ( ( bits >> ( p - 5 ) ) ^ ( bits >> ( p + 5 ) ) ) & 1 ) ) continue;
					if( x > 0 && x < 4 && ( ( ( bits >> ( p - 1 ) ) ^ ( bits >> ( p + 1 ) ) ) & 1 ) ) continue;
					dp[ bits | ( 1 << p ) ] += dp[ bits ];
					dp[ bits | ( 1 << p ) ] %= MOD;
				}
			}
		}
	}
	cout << dp[ ( 1 << 25 ) - 1 ] << endl;
	return 0;
}

Submission Info

Submission Time
Task D - 25個の整数
User keitanxkeitan
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2180 Byte
Status AC
Exec Time 131 ms
Memory 113280 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 4
AC × 19
AC × 29
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 38 ms 12544 KB
sample-02.txt AC 40 ms 20736 KB
sample-03.txt AC 34 ms 256 KB
sample-04.txt AC 37 ms 12544 KB
test-1-01.txt AC 37 ms 12544 KB
test-1-02.txt AC 38 ms 14592 KB
test-1-03.txt AC 38 ms 16640 KB
test-1-04.txt AC 53 ms 69888 KB
test-1-05.txt AC 38 ms 16640 KB
test-1-06.txt AC 38 ms 16640 KB
test-1-07.txt AC 35 ms 2304 KB
test-1-08.txt AC 44 ms 39168 KB
test-1-09.txt AC 38 ms 12544 KB
test-1-10.txt AC 38 ms 12544 KB
test-1-11.txt AC 38 ms 12544 KB
test-1-12.txt AC 39 ms 18688 KB
test-1-13.txt AC 37 ms 12544 KB
test-1-14.txt AC 39 ms 18688 KB
test-1-15.txt AC 41 ms 24832 KB
test-2-01.txt AC 43 ms 33024 KB
test-2-02.txt AC 41 ms 24960 KB
test-2-03.txt AC 42 ms 30976 KB
test-2-04.txt AC 65 ms 113152 KB
test-2-05.txt AC 57 ms 70272 KB
test-2-06.txt AC 104 ms 68224 KB
test-2-07.txt AC 89 ms 92544 KB
test-2-08.txt AC 112 ms 113280 KB
test-2-09.txt AC 94 ms 74624 KB
test-2-10.txt AC 131 ms 78336 KB