Submission #4314458


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

const int64_t MOD = 1e9+7;
void add(int64_t& a, int64_t b){
     a = (a+b) % MOD;
}

int main(){
    int N, K;
    cin >> N >> K;

    int64_t pow2[5002];
    pow2[0] = 1;
    for(int i=1; i<=5001; i++) pow2[i] = pow2[i-1] * 2 % MOD;

    static int64_t dp[5002][5002];
    dp[0][0] = 1;

    for(int i=1; i<=N-K; i++){
        int64_t sum = dp[i-1][i-1];
        for(int j=i; j<=N; j++){
            dp[i][j] = dp[i-1][j] * pow2[max(0, j-i-K+1)] % MOD;
            if(j-i-K >= 0) add(dp[i][j], sum * pow2[j-i-K]);
            add(sum, dp[i-1][j]);
        }
    }

    cout << dp[N-K][N] << endl;
    return 0;
}

Submission Info

Submission Time
Task E - Erasure
User betrue12
Language C++14 (GCC 5.4.1)
Score 700
Code Size 690 Byte
Status AC
Exec Time 124 ms
Memory 194944 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 3
AC × 14
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt
All 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 1 ms 256 KiB
01-02.txt AC 45 ms 103936 KiB
01-03.txt AC 15 ms 46080 KiB
01-04.txt AC 80 ms 147456 KiB
01-05.txt AC 38 ms 61440 KiB
01-06.txt AC 1 ms 384 KiB
01-07.txt AC 124 ms 194944 KiB
01-08.txt AC 124 ms 194816 KiB
01-09.txt AC 108 ms 162048 KiB
01-10.txt AC 102 ms 151808 KiB
01-11.txt AC 1 ms 384 KiB
sample-01.txt AC 1 ms 256 KiB
sample-02.txt AC 1 ms 256 KiB
sample-03.txt AC 120 ms 186624 KiB