제출 #299096

#제출 시각아이디문제언어결과실행 시간메모리
299096TadijaSebezBootfall (IZhO17_bootfall)C++11
44 / 100
1097 ms1148 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=505;
int n,a[N];
bitset<N*N> DP(int skip){
	bitset<N*N> ans;
	ans[0]=1;
	for(int i=1;i<=n;i++)if(i!=skip)ans|=ans<<a[i];
	return ans;
}
int ok[N*N];
int main(){
	scanf("%i",&n);
	int sum=0;
	for(int i=1;i<=n;i++)scanf("%i",&a[i]),sum+=a[i];
	bitset<N*N> all=DP(0);
	if(sum&1||!all[sum/2])return 0*printf("0\n");
	for(int i=1;i<=n;i++){
		bitset<N*N> dp=DP(i);
		for(int j=1;j<=sum;j++){
			if((sum-a[i]+j)%2==0&&dp[(sum-a[i]+j)/2])
				ok[j]++;
		}
	}
	vector<int> ans;
	for(int i=1;i<=sum;i++)if(ok[i]==n)ans.push_back(i);
	printf("%i\n",ans.size());
	for(int i:ans)printf("%i ",i);
	printf("\n");
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

bootfall.cpp: In function 'int main()':
bootfall.cpp:27:11: warning: format '%i' expects argument of type 'int', but argument 2 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   27 |  printf("%i\n",ans.size());
      |          ~^    ~~~~~~~~~~
      |           |            |
      |           int          std::vector<int>::size_type {aka long unsigned int}
      |          %li
bootfall.cpp:13:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   13 |  scanf("%i",&n);
      |  ~~~~~^~~~~~~~~
bootfall.cpp:15:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   15 |  for(int i=1;i<=n;i++)scanf("%i",&a[i]),sum+=a[i];
      |                       ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...