Submission #37474

#TimeUsernameProblemLanguageResultExecution timeMemory
37474HardNutBootfall (IZhO17_bootfall)C++14
100 / 100
973 ms4824 KiB
#include<bits/stdc++.h> using namespace std; const int N = 250005; const int mod = 1e9 + 7; typedef long long ll; int n, a[505], sum; vector<int> vec; int ans[N]; int dp[N]; bool used[505]; void add(int v) { for (int i = sum; i >= 0; i--) { dp[i + v] += dp[i]; if (dp[i + v] >= mod) dp[i + v] -= mod; } sum += v; } void del(int v) { sum -= v; for (int i = 0; i <= sum; i++) { dp[i + v] = (dp[i + v] - dp[i] + mod); if (dp[i + v] >= mod) dp[i + v] -= mod; } } int main() { // freopen("bootfall.in", "r", stdin); // freopen("bootfall.out", "w", stdout); scanf("%d", &n); dp[0] = 1; for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); add(a[i]); } if (sum % 2 == 1) { cout << 0; return 0; } for (int i = 1; i <= sum; i++) { ans[i] = 1; } if (!dp[sum / 2]) { cout << 0; return 0; } for (int i = 1; i <= n; i++) { if (used[a[i]]) continue; used[a[i]] = 1; del(a[i]); for (int j = 1; j <= N; j++) { if ((sum + j) % 2) { ans[j] = 0; continue; } if (!dp[(sum + j) / 2]) { ans[j] = 0; } } add(a[i]); } int cnt = 0; for (int i = 1; i <= sum; i++) { if (ans[i]) vec.push_back(i); } printf("%d\n", vec.size()); for (int i = 0; i < vec.size(); i++) printf("%d ", vec[i]); }

Compilation message (stderr)

bootfall.cpp: In function 'int main()':
bootfall.cpp:75:30: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<int>::size_type {aka long unsigned int}' [-Wformat=]
     printf("%d\n", vec.size());
                              ^
bootfall.cpp:76:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < vec.size(); i++)
                       ^
bootfall.cpp:70:9: warning: unused variable 'cnt' [-Wunused-variable]
     int cnt = 0;
         ^
bootfall.cpp:37:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
                    ^
bootfall.cpp:40:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &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...