Submission #860447


Source Code Expand

Copy
/**
 * Created on 2016/08/31.
 */

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int A = sc.nextInt();

        int[] nums = new int[N];
        long X = -1;
        for(int i=0; i<N; i++){
            nums[i] = sc.nextInt();
            X = Math.max(nums[i], X);
        }

        long ans = solve(N, A, nums, (int)X);

        System.out.println(ans);
    }

    private static long solve(int N, int A, int[] nums, int X) {

        long[][][] dp = new long[N+1][N+1][N*X + 1];

        dp[0][0][0] = 1L;

        for(int i=1; i<N+1; i++){
            for(int j=0; j<N+1; j++){
                for(int k=0; k<N*X+1; k++){

                    int prevJ = j-1;
                    int prevK = k-nums[i-1];


                    if(prevJ < 0 || prevK < 0){
                        dp[i][j][k] = dp[i-1][j][k];
                    }else{
                        dp[i][j][k] = dp[i-1][prevJ][prevK] + dp[i-1][j][k];
                    }
                }
            }
        }

        long ret = 0;
        for(int t=1; t<=N; t++){
            if(t*A <= t*X) {
                ret += dp[N][t][t * A];
            }
        }

        return ret;
    }


    // Algorithms
    private static ArrayList<Integer> getPrimeNumbers(int upperLimit) {
        ArrayList<Integer> ret = new ArrayList<Integer>();

        ret.add(2);
        ret.add(3);

        for (int i = 5; i <= upperLimit; i += 2) {
            boolean isPrime = true;
            // 素数で平方根まで試し割りしてみる
            for (int j = 2; j * j <= i; j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }

            if (isPrime) {
                ret.add(i);
            }
        }
        return ret;
    }

    // View Method
    //* List
    public static <T> void viewList(List<T> list) {
        for (T item : list) {
            System.out.print(item + "\t");
        }
        System.out.println("");
    }

    //* Map
    public static <K, V> void viewMap(Map<K, V> map) {
        Set<K> keys = map.keySet();
        for (K key : keys) {
            System.out.print("(" + key + ", " + map.get(key) + ")\t");
        }
        System.out.println("");
    }

    //* Matrix
    public static void viewIntMatrix(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + "\t");
            }
            System.out.println("");
        }
    }
}

Submission Info

Submission Time
Task C - Tak and Cards
User neoki
Language Java8 (OpenJDK 1.8.0)
Score 300
Code Size 2776 Byte
Status AC
Exec Time 397 ms
Memory 77520 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 200 / 200 100 / 100
Status
AC × 4
AC × 12
AC × 24
Set Name Test Cases
Sample example_01.txt, example_02.txt, example_03.txt, example_04.txt
Subtask1 example_01.txt, example_02.txt, example_03.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
All example_01.txt, example_02.txt, example_03.txt, example_04.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, 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
Case Name Status Exec Time Memory
example_01.txt AC 192 ms 9428 KB
example_02.txt AC 189 ms 9548 KB
example_03.txt AC 194 ms 9552 KB
example_04.txt AC 203 ms 10324 KB
subtask1_01.txt AC 217 ms 11344 KB
subtask1_02.txt AC 216 ms 11472 KB
subtask1_03.txt AC 217 ms 11472 KB
subtask1_04.txt AC 195 ms 9420 KB
subtask1_05.txt AC 219 ms 11344 KB
subtask1_06.txt AC 195 ms 9420 KB
subtask1_07.txt AC 189 ms 9416 KB
subtask1_08.txt AC 214 ms 11340 KB
subtask1_09.txt AC 219 ms 11212 KB
subtask2_01.txt AC 397 ms 77392 KB
subtask2_02.txt AC 393 ms 77388 KB
subtask2_03.txt AC 355 ms 60628 KB
subtask2_04.txt AC 391 ms 77520 KB
subtask2_05.txt AC 395 ms 77396 KB
subtask2_06.txt AC 215 ms 10828 KB
subtask2_07.txt AC 395 ms 77512 KB
subtask2_08.txt AC 267 ms 33104 KB
subtask2_09.txt AC 267 ms 33096 KB
subtask2_10.txt AC 303 ms 41040 KB
subtask2_11.txt AC 315 ms 42576 KB