답안 #537469

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
537469 2022-03-15T06:35:03 Z jamezzz Kpart (eJOI21_kpart) C++17
0 / 100
57 ms 18400 KB
#include <bits/stdc++.h>
using namespace std;

#define sf scanf
#define pf printf

inline int rd(){
	int x=0;
	char ch=getchar_unlocked();
	while(!(ch&16))ch=getchar();//keep reading while current character is whitespace
    while(ch&16){//this will break when ‘\n’ or ‘ ‘ is encountered
		x=(x<<3)+(x<<1)+(ch&15);
		ch=getchar_unlocked();
	}
	return x;
}

int t,n,a[1005],p[1005],dp[1005][50005],die[1005];

int main(){
	t=rd();
	for(int i=1;i<=1000;++i)dp[i-1][0]=i;
	while(t--){
		n=rd();
		for(int i=1;i<=n;++i){
			a[i]=rd(),p[i]=a[i]+p[i-1];
		}
		memset(die,0,sizeof die);
		for(int i=1;i<=n;++i){
			for(int v=1;v<=p[i];++v){
				dp[i][v]=max(dp[i-1][v],dp[i-1][v-a[i]]);
			}
		}
		for(int k=1;k<=n;++k){
			for(int i=1;i+k-1<=n;++i){
				int j=i+k-1;
				if(die[k])break;
				if(((p[j]-p[i-1])&1)==1)die[k]=1;
				if(dp[j][(p[j]-p[i-1])/2]<i)die[k]=1;
			}
		}
		int cnt=0;
		for(int i=1;i<=n;++i)if(!die[i])++cnt;
		pf("%d ",cnt);
		for(int i=1;i<=n;++i)if(!die[i])pf("%d ",i);
		pf("\n");
	}
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 4820 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 5844 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 57 ms 18400 KB Output isn't correct
2 Halted 0 ms 0 KB -