제출 #319228

#제출 시각아이디문제언어결과실행 시간메모리
319228BeanZBootfall (IZhO17_bootfall)C++14
65 / 100
600 ms1284 KiB
// I_Love_LPL
#include <bits/stdc++.h>
using namespace std;
#define task "A"
#define ll int
#define endl '\n'
const int N = 505;
const int mod = 1e9 + 7;
ll a[N];
bool chk[505];
const int lim = 500 * 500 + 5;
const int lim2 = 500 * 500 / 2 + 1;
bitset<lim2> bit;
bitset<lim> bit2, tmp;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    if (fopen(task".inp", "r")){
        freopen(task".inp", "r", stdin);
        freopen(task".out", "w", stdout);
    }
    ll n;
    cin >> n;
    ll sum = 0;
    for (int i = 1; i <= n; i++) cin >> a[i], sum += a[i];
    bit[0] = 1;
    for (int i = 1; i <= n; i++){
        bit |= (bit << a[i]);
    }
    if (bit[sum / 2] == 0) return cout << 0, 0;
    for (int i = 1; i < lim2; i++) bit2[i] = 1;
    for (int i = 1; i <= n; i++){
        if (chk[a[i]]) continue;
        chk[a[i]] = 1;
        bit.reset();
        bit[0] = 1;
        for (int j = 1; j <= n; j++){
            if (i == j) continue;
            bit |= (bit << a[j]);
        }
        tmp.reset();
        for (int j = 0; j <= lim; j++){
            if ((sum - j - a[i] - j) <= 0) break;
            if (bit[j] && ((sum - j - a[i] - j) > 0)){
                tmp[sum - j - a[i] - j] = 1;
            }
        }
        bit2 = bit2 & tmp;
    }
    vector<ll> ans;
    for (int i = 1; i < lim2; i++){
        if (bit2[i]) ans.push_back(i);
    }
    cout << ans.size() << endl;
    for (auto j : ans) cout << j << " ";
}
/*
4
1 3 1 5
6
3 5 7 11 9 13
3
2 2 2
*/

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

bootfall.cpp: In function 'int main()':
bootfall.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   19 |         freopen(task".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
bootfall.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   20 |         freopen(task".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...