Submission #1369846


Source Code Expand

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <deque>
#include <queue>
#include <set>
#include <map>
#include <unordered_map>
#include <bitset>
#include <string>
#define pb push_back
#define sz(V) ((int)(V).size())
#define allv(V) ((V).begin()),((V).end())
#define befv(V) ((V)[(sz(V)-2)])
#define sorv(V) sort(allv(V))
#define revv(V) reverse(allv(V))
#define univ(V) (V).erase(unique(allv(V)),(V).end())
#define upmin(a,b) (a)=min((a),(b))
#define upmax(a,b) (a)=max((a),(b))
#define rb(x) ((x)&(-(x)))
#define INF (1100000099)
#define INFLL (1100000000000000099ll)
#define MAXN (5005)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<int, ll> pil;
typedef pair<ll, int> pli;

bool d[MAXN][MAXN];
bool od[MAXN];
int A[MAXN];
int N, K, Ans;

int main() {
	scanf("%d%d", &N, &K);
	for(int i = 1; i <= N; i++) scanf("%d", &A[i]);
	d[0][0] = true;
	for(int i = 1; i <= N; i++) for(int j = 0; j <= K; j++) {
		bool &ret = d[i][j];
		if(j < A[i]) { ret = d[i-1][j]; continue; }
		ret = d[i-1][j] | d[i-1][j - A[i]];
	}
	od[0] = true;
	for(int i = N; i; i--) {
		if(K <= A[i]) { Ans++; continue; }
		int cnt = 0;
		for(int j = K-A[i]; j <= K-1; j++) cnt += od[j];
		for(int j = 0; j <= K-1; j++) {
			if(cnt && d[i-1][j]) { Ans++; break; }
			if(0 <= K-1-j) cnt -= od[K-1-j];
			if(0 <= K-A[i]-j-1) cnt += od[K-A[i]-j-1];
		}
		for(int j = K-A[i]; ~j; j--) if(od[j]) od[j+A[i]] = true;
	}
	printf("%d\n", N-Ans);
	return 0;
}

Submission Info

Submission Time
Task D - No Need
User youngyojun
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1681 Byte
Status AC
Exec Time 87 ms
Memory 24704 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:43:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &N, &K);
                       ^
./Main.cpp:44:48: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  for(int i = 1; i <= N; i++) scanf("%d", &A[i]);
                                                ^

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 1 ms 256 KB
0_001.txt AC 1 ms 256 KB
0_002.txt AC 1 ms 256 KB
1_003.txt AC 1 ms 256 KB
1_004.txt AC 1 ms 256 KB
1_005.txt AC 1 ms 256 KB
1_006.txt AC 1 ms 256 KB
1_007.txt AC 1 ms 256 KB
1_008.txt AC 2 ms 2048 KB
1_009.txt AC 2 ms 2048 KB
1_010.txt AC 2 ms 2048 KB
1_011.txt AC 2 ms 1792 KB
1_012.txt AC 2 ms 2048 KB
1_013.txt AC 2 ms 1792 KB
1_014.txt AC 2 ms 1792 KB
1_015.txt AC 2 ms 2048 KB
1_016.txt AC 1 ms 256 KB
1_017.txt AC 1 ms 256 KB
1_018.txt AC 1 ms 256 KB
1_019.txt AC 2 ms 1920 KB
1_020.txt AC 2 ms 1920 KB
1_021.txt AC 2 ms 1920 KB
1_022.txt AC 2 ms 1024 KB
1_023.txt AC 1 ms 768 KB
1_024.txt AC 2 ms 1920 KB
1_025.txt AC 2 ms 1920 KB
2_026.txt AC 1 ms 256 KB
2_027.txt AC 1 ms 384 KB
2_028.txt AC 1 ms 384 KB
2_029.txt AC 70 ms 24704 KB
2_030.txt AC 87 ms 24704 KB
2_031.txt AC 24 ms 24704 KB
2_032.txt AC 7 ms 23936 KB
2_033.txt AC 24 ms 24704 KB
2_034.txt AC 7 ms 23936 KB
2_035.txt AC 7 ms 23936 KB
2_036.txt AC 48 ms 24704 KB
2_037.txt AC 1 ms 256 KB
2_038.txt AC 1 ms 384 KB
2_039.txt AC 1 ms 384 KB
2_040.txt AC 21 ms 24704 KB
2_041.txt AC 29 ms 24704 KB
2_042.txt AC 40 ms 24704 KB
2_043.txt AC 22 ms 16640 KB
2_044.txt AC 25 ms 22784 KB
2_045.txt AC 16 ms 20736 KB
2_046.txt AC 31 ms 24704 KB
2_047.txt AC 44 ms 24704 KB
2_048.txt AC 54 ms 24704 KB
2_049.txt AC 48 ms 24704 KB
2_050.txt AC 44 ms 24704 KB