Submission #1606424


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

#define fst(t) std::get<0>(t)
#define snd(t) std::get<1>(t)
#define thd(t) std::get<2>(t)
#define unless(p) if(!(p))
#define until(p) while(!(p))

using ll = long long;
using P = std::tuple<int,int>;

const int dx[8] = {-1, 1, 0, 0, -1, -1, 1, 1}, dy[8] = {0, 0, -1, 1, -1, 1, -1, 1};

int as[5100];
bool dp[5100][5100], dp2[5100][5100];

int main(){
    std::cin.tie(nullptr);
    std::ios::sync_with_stdio(false);

    int N, K;
    std::cin >> N >> K;

    for(int i=1;i<=N;++i){
        std::cin >> as[i];
    }

    dp[0][0] = 1;
    for(int i=1;i<=N;++i){
        for(int j=0;j<K;++j){
            dp[i][j] |= dp[i-1][j];
            if(j - as[i] >= 0){
                dp[i][j] |= dp[i-1][j-as[i]];
            }
        }
    }

    dp2[N+1][0] = 1;
    for(int i=N;i>=1;--i){
        for(int j=0;j<K;++j){
            dp2[i][j] |= dp2[i+1][j];
            if(j - as[i] >= 0){
                dp2[i][j] |= dp2[i+1][j-as[i]];
            }
        }
    }    
    
    int res = 0;
    for(int i=1;i<=N;++i){        
        queue<int> q;
        int k = K - 1;
        bool isNeeded = false;
        for(int j=0;j<K;++j){
            // [lb, ub)
            int lb = max(0, K - as[i] - j),
                ub = K - j;
            
            while(lb <= k && k < ub){
                if(dp2[i+1][k]){
                    q.emplace(k);
                }
                --k;
            }

            if(not q.empty() && (q.front() < lb || ub <= q.front())){
                q.pop();
            }

            if(dp[i-1][j] && not q.empty()){
                isNeeded = true;
            }
        }

        if(not isNeeded){
            // std::cout << "! " << i << std::endl;
            ++res;
        }
    }

    std::cout << res << std::endl;
}

Submission Info

Submission Time
Task D - No Need
User iwashisnake
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1893 Byte
Status AC
Exec Time 211 ms
Memory 50560 KB

Judge Result

Set Name Sample Subtask All
Score / Max Score 0 / 0 300 / 300 300 / 300
Status
AC × 3
AC × 26
AC × 51
Set Name Test Cases
Sample 0_000.txt, 0_001.txt, 0_002.txt
Subtask 0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt
All 0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt, 2_026.txt, 2_027.txt, 2_028.txt, 2_029.txt, 2_030.txt, 2_031.txt, 2_032.txt, 2_033.txt, 2_034.txt, 2_035.txt, 2_036.txt, 2_037.txt, 2_038.txt, 2_039.txt, 2_040.txt, 2_041.txt, 2_042.txt, 2_043.txt, 2_044.txt, 2_045.txt, 2_046.txt, 2_047.txt, 2_048.txt, 2_049.txt, 2_050.txt
Case Name Status Exec Time Memory
0_000.txt AC 2 ms 2304 KB
0_001.txt AC 1 ms 2304 KB
0_002.txt AC 1 ms 2304 KB
1_003.txt AC 1 ms 2304 KB
1_004.txt AC 1 ms 2304 KB
1_005.txt AC 1 ms 2304 KB
1_006.txt AC 1 ms 2432 KB
1_007.txt AC 1 ms 2432 KB
1_008.txt AC 4 ms 6144 KB
1_009.txt AC 3 ms 6144 KB
1_010.txt AC 4 ms 6144 KB
1_011.txt AC 3 ms 6016 KB
1_012.txt AC 4 ms 6144 KB
1_013.txt AC 2 ms 6016 KB
1_014.txt AC 2 ms 6016 KB
1_015.txt AC 4 ms 6144 KB
1_016.txt AC 1 ms 2304 KB
1_017.txt AC 1 ms 2304 KB
1_018.txt AC 1 ms 2304 KB
1_019.txt AC 3 ms 6016 KB
1_020.txt AC 2 ms 6016 KB
1_021.txt AC 3 ms 6016 KB
1_022.txt AC 2 ms 3072 KB
1_023.txt AC 2 ms 2816 KB
1_024.txt AC 3 ms 6016 KB
1_025.txt AC 4 ms 6016 KB
2_026.txt AC 1 ms 2304 KB
2_027.txt AC 1 ms 2432 KB
2_028.txt AC 1 ms 2432 KB
2_029.txt AC 166 ms 50560 KB
2_030.txt AC 166 ms 50560 KB
2_031.txt AC 160 ms 50560 KB
2_032.txt AC 13 ms 49920 KB
2_033.txt AC 160 ms 50560 KB
2_034.txt AC 12 ms 49920 KB
2_035.txt AC 13 ms 49920 KB
2_036.txt AC 211 ms 50560 KB
2_037.txt AC 2 ms 2432 KB
2_038.txt AC 2 ms 2432 KB
2_039.txt AC 2 ms 2432 KB
2_040.txt AC 145 ms 50560 KB
2_041.txt AC 118 ms 50560 KB
2_042.txt AC 172 ms 50560 KB
2_043.txt AC 104 ms 33024 KB
2_044.txt AC 118 ms 45312 KB
2_045.txt AC 64 ms 43264 KB
2_046.txt AC 95 ms 50560 KB
2_047.txt AC 137 ms 50560 KB
2_048.txt AC 174 ms 50560 KB
2_049.txt AC 176 ms 50560 KB
2_050.txt AC 177 ms 50560 KB