Submission #153196


Source Code Expand

import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		new Main().run();
	}

	void run()
	{
		Scanner cin = new Scanner(System.in);
		int N = cin.nextInt();
		int M = cin.nextInt();
		int K = cin.nextInt();
		int[] D = new int[N - 1];

		for(int i=0;i<N-1;i++){
			D[i] = cin.nextInt();
		}
		if(N>12) return;

		//2つの街の間の距離を計算する
		int[][] dist = new int[N][N];
		for(int i=0;i<N;i++){
			int nowdist = 0;
			for(int j=i+1;j<N;j++){
				nowdist += D[j-1];
				nowdist %= M;
				dist[i][j] = dist[j][i] = nowdist;
			}
		}
		
		//配列の初期化
		int mod = 1000000007;
		long[][][] dp = new long[1<<N][N][M];
		for(int i=0;i<N;i++){
			dp[1<<i][i][0] = 1;
		}
		
		
		for(int i=0;i<(1<<N);i++){
			for(int j=0;j<N;j++){
				for(int k=0;k<M;k++){
					if(dp[i][j][k]==0) continue;
					//次の街を全通り調べる
					for(int l=0;l<N;l++){
						if((i>>l) % 2 == 1) continue;
						int nexti = i | (1 << l);
						int nextk = (k + dist[j][l]) % M;
						dp[nexti][l][nextk] += dp[i][j][k];
						dp[nexti][l][nextk] %= mod;
					}
				}
			}
		}
		
		//K個の街を訪れて、余りが0のパターンを全列挙
		long ret = 0;
		for(int i=0;i<(1<<N);i++){
			if(Integer.bitCount(i) != K) continue;
			for(int j=0;j<N;j++){
				ret += dp[i][j][0];
				ret %= mod;
			}
		}
		System.out.println(ret);
	}
}

Submission Info

Submission Time
Task D - お菓子の国の旅行
User chokudai
Language Java (OpenJDK 1.7.0)
Score 30
Code Size 1444 Byte
Status WA
Exec Time 681 ms
Memory 38176 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 0 / 70
Status
AC × 1
WA × 1
AC × 12
AC × 16
WA × 13
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt
Subtask1 subtask0-01, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt
Subtask2 subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 534 ms 23444 KB
subtask0_sample_02.txt WA 519 ms 23308 KB
subtask1_01.txt AC 526 ms 23332 KB
subtask1_02.txt AC 522 ms 23448 KB
subtask1_03.txt AC 681 ms 38020 KB
subtask1_04.txt AC 526 ms 23332 KB
subtask1_05.txt AC 654 ms 30872 KB
subtask1_06.txt AC 529 ms 23456 KB
subtask1_07.txt AC 535 ms 23336 KB
subtask1_08.txt AC 519 ms 23464 KB
subtask1_09.txt AC 674 ms 38156 KB
subtask1_10.txt AC 673 ms 37668 KB
subtask1_11.txt AC 674 ms 38176 KB
subtask1_12.txt AC 595 ms 37688 KB
subtask2_01.txt WA 536 ms 23844 KB
subtask2_02.txt WA 525 ms 23836 KB
subtask2_03.txt AC 533 ms 23896 KB
subtask2_04.txt WA 524 ms 23332 KB
subtask2_05.txt AC 639 ms 38056 KB
subtask2_06.txt AC 526 ms 23464 KB
subtask2_07.txt WA 523 ms 23344 KB
subtask2_08.txt WA 522 ms 23332 KB
subtask2_09.txt WA 515 ms 23464 KB
subtask2_10.txt WA 527 ms 23712 KB
subtask2_11.txt WA 526 ms 23464 KB
subtask2_12.txt WA 529 ms 23460 KB
subtask2_13.txt WA 531 ms 23832 KB
subtask2_14.txt WA 530 ms 23700 KB
subtask2_15.txt WA 524 ms 23880 KB