Submission #173246

# Submission time Handle Problem Language Result Execution time Memory
173246 2020-01-03T16:14:11 Z DeD_TihoN Bootfall (IZhO17_bootfall) C++14
65 / 100
1000 ms 19828 KB
//#pragma GCC optimize ("O3")
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define ll long long
#define ld long double
#define all(a) a.begin(),a.end()
#define ull unsigned long long
#define endl '\n'
#define y1 yaumru
#define ios ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define iter vector<int>::iterator
using namespace std;
using namespace __gnu_pbds;

template<class T>
using ordered_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;

template<class T>
using ordered_multiset=tree<T,null_type,less_equal<T>,rb_tree_tag,tree_order_statistics_node_update>;

mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rnd1(chrono::steady_clock::now().time_since_epoch().count());

//find_by_order
//order_of_key

const int N=500+1;
const int inf=1e9+1e9;
const int mod=1e9+7;
const ld eps=1e-9;
const int M=230000+1;

bitset<M>dp[N];
bitset<M>pref[N];
int a[N];
bool used[N];

main ()
{
    ios;
    int n;
    cin>>n;
    for (int i=1;i<=n;++i){
        cin>>a[i];
    }
    int sum=0;
    bool c1=false;
    bool c2=false;
    for (int i=1;i<=n;++i){
        sum+=a[i];
        if (a[i]%2==1){
            c1=true;
        }
        else {
            c2=true;
        }
    }
    if (c1 && c2){
        cout<<0<<endl;
        exit(0);
    }
    if (sum%2==1){
        cout<<0<<endl;
        exit(0);
    }
    pref[0][0]=1;
    for (int i=1;i<=n;++i){
        pref[i]=(pref[i-1]|(pref[i-1]<<a[i]));
    }
    for (int i=0;i<=n;++i){
        if (i==0){
            dp[i][0]=1;
            for (int j=1;j<=n;++j){
                if (j==i)continue;
                bitset<M>f=(dp[i]<<a[j]);
                dp[i]=(dp[i]|f);
            }
            if (dp[0][sum/2]==0){
                cout<<0<<endl;
                exit(0);
            }
        }
        else {
            if (!used[a[i]]){
                used[a[i]]=true;
                dp[a[i]]=pref[i-1];
                for (int j=i+1;j<=n;++j){
                    if (j==i)continue;
                    bitset<M>f=(dp[a[i]]<<a[j]);
                    dp[a[i]]=(dp[a[i]]|f);
                }
            }
        }
    }
    vector<int>ans;
    for (int i=1;i<=M;++i){
        bool cc=true;
        for (int j=1;j<=n;++j){
            if ((sum-a[j]+i)%2==1){
                cc=false;
                break;
            }
            if ((sum-a[j]+i)%2==0){
                if (dp[a[j]][(sum-a[j]+i)/2]==0){
                    cc=false;
                    break;
                }
            }
        }
        if (cc)ans.pb(i);
    }
    cout<<(int)ans.size()<<endl;
    for (int i=0;i<ans.size();++i){
        cout<<ans[i]<<' ';
    }
}

Compilation message

bootfall.cpp:43:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main ()
       ^
bootfall.cpp: In function 'int main()':
bootfall.cpp:118:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0;i<ans.size();++i){
                  ~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 760 KB Output is correct
2 Correct 4 ms 888 KB Output is correct
3 Correct 2 ms 632 KB Output is correct
4 Correct 3 ms 632 KB Output is correct
5 Correct 5 ms 1272 KB Output is correct
6 Correct 4 ms 1016 KB Output is correct
7 Correct 4 ms 888 KB Output is correct
8 Correct 5 ms 1144 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 760 KB Output is correct
2 Correct 4 ms 888 KB Output is correct
3 Correct 2 ms 632 KB Output is correct
4 Correct 3 ms 632 KB Output is correct
5 Correct 5 ms 1272 KB Output is correct
6 Correct 4 ms 1016 KB Output is correct
7 Correct 4 ms 888 KB Output is correct
8 Correct 5 ms 1144 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 5 ms 1400 KB Output is correct
11 Correct 8 ms 1656 KB Output is correct
12 Correct 8 ms 1628 KB Output is correct
13 Correct 2 ms 312 KB Output is correct
14 Correct 8 ms 1656 KB Output is correct
15 Correct 7 ms 1528 KB Output is correct
16 Correct 8 ms 1660 KB Output is correct
17 Correct 5 ms 1272 KB Output is correct
18 Correct 7 ms 1528 KB Output is correct
19 Correct 7 ms 1528 KB Output is correct
20 Correct 5 ms 1400 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 760 KB Output is correct
2 Correct 4 ms 888 KB Output is correct
3 Correct 2 ms 632 KB Output is correct
4 Correct 3 ms 632 KB Output is correct
5 Correct 5 ms 1272 KB Output is correct
6 Correct 4 ms 1016 KB Output is correct
7 Correct 4 ms 888 KB Output is correct
8 Correct 5 ms 1144 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 5 ms 1400 KB Output is correct
11 Correct 8 ms 1656 KB Output is correct
12 Correct 8 ms 1628 KB Output is correct
13 Correct 2 ms 312 KB Output is correct
14 Correct 8 ms 1656 KB Output is correct
15 Correct 7 ms 1528 KB Output is correct
16 Correct 8 ms 1660 KB Output is correct
17 Correct 5 ms 1272 KB Output is correct
18 Correct 7 ms 1528 KB Output is correct
19 Correct 7 ms 1528 KB Output is correct
20 Correct 5 ms 1400 KB Output is correct
21 Correct 31 ms 3448 KB Output is correct
22 Correct 36 ms 3872 KB Output is correct
23 Correct 19 ms 2808 KB Output is correct
24 Correct 56 ms 4500 KB Output is correct
25 Correct 18 ms 3448 KB Output is correct
26 Correct 19 ms 3576 KB Output is correct
27 Correct 18 ms 3576 KB Output is correct
28 Correct 14 ms 3448 KB Output is correct
29 Correct 13 ms 3448 KB Output is correct
30 Correct 2 ms 376 KB Output is correct
31 Correct 42 ms 4216 KB Output is correct
32 Correct 58 ms 4832 KB Output is correct
33 Correct 10 ms 3448 KB Output is correct
34 Correct 10 ms 3452 KB Output is correct
35 Correct 13 ms 3448 KB Output is correct
36 Correct 61 ms 4984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 760 KB Output is correct
2 Correct 4 ms 888 KB Output is correct
3 Correct 2 ms 632 KB Output is correct
4 Correct 3 ms 632 KB Output is correct
5 Correct 5 ms 1272 KB Output is correct
6 Correct 4 ms 1016 KB Output is correct
7 Correct 4 ms 888 KB Output is correct
8 Correct 5 ms 1144 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 5 ms 1400 KB Output is correct
11 Correct 8 ms 1656 KB Output is correct
12 Correct 8 ms 1628 KB Output is correct
13 Correct 2 ms 312 KB Output is correct
14 Correct 8 ms 1656 KB Output is correct
15 Correct 7 ms 1528 KB Output is correct
16 Correct 8 ms 1660 KB Output is correct
17 Correct 5 ms 1272 KB Output is correct
18 Correct 7 ms 1528 KB Output is correct
19 Correct 7 ms 1528 KB Output is correct
20 Correct 5 ms 1400 KB Output is correct
21 Correct 31 ms 3448 KB Output is correct
22 Correct 36 ms 3872 KB Output is correct
23 Correct 19 ms 2808 KB Output is correct
24 Correct 56 ms 4500 KB Output is correct
25 Correct 18 ms 3448 KB Output is correct
26 Correct 19 ms 3576 KB Output is correct
27 Correct 18 ms 3576 KB Output is correct
28 Correct 14 ms 3448 KB Output is correct
29 Correct 13 ms 3448 KB Output is correct
30 Correct 2 ms 376 KB Output is correct
31 Correct 42 ms 4216 KB Output is correct
32 Correct 58 ms 4832 KB Output is correct
33 Correct 10 ms 3448 KB Output is correct
34 Correct 10 ms 3452 KB Output is correct
35 Correct 13 ms 3448 KB Output is correct
36 Correct 61 ms 4984 KB Output is correct
37 Correct 143 ms 8028 KB Output is correct
38 Correct 149 ms 8000 KB Output is correct
39 Correct 20 ms 7544 KB Output is correct
40 Correct 427 ms 12792 KB Output is correct
41 Correct 22 ms 8184 KB Output is correct
42 Correct 317 ms 11388 KB Output is correct
43 Correct 127 ms 8536 KB Output is correct
44 Correct 129 ms 8832 KB Output is correct
45 Correct 134 ms 8808 KB Output is correct
46 Correct 371 ms 12528 KB Output is correct
47 Correct 324 ms 11384 KB Output is correct
48 Correct 53 ms 8056 KB Output is correct
49 Correct 33 ms 7800 KB Output is correct
50 Correct 349 ms 11768 KB Output is correct
51 Correct 2 ms 380 KB Output is correct
52 Correct 91 ms 8952 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 760 KB Output is correct
2 Correct 4 ms 888 KB Output is correct
3 Correct 2 ms 632 KB Output is correct
4 Correct 3 ms 632 KB Output is correct
5 Correct 5 ms 1272 KB Output is correct
6 Correct 4 ms 1016 KB Output is correct
7 Correct 4 ms 888 KB Output is correct
8 Correct 5 ms 1144 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 5 ms 1400 KB Output is correct
11 Correct 8 ms 1656 KB Output is correct
12 Correct 8 ms 1628 KB Output is correct
13 Correct 2 ms 312 KB Output is correct
14 Correct 8 ms 1656 KB Output is correct
15 Correct 7 ms 1528 KB Output is correct
16 Correct 8 ms 1660 KB Output is correct
17 Correct 5 ms 1272 KB Output is correct
18 Correct 7 ms 1528 KB Output is correct
19 Correct 7 ms 1528 KB Output is correct
20 Correct 5 ms 1400 KB Output is correct
21 Correct 31 ms 3448 KB Output is correct
22 Correct 36 ms 3872 KB Output is correct
23 Correct 19 ms 2808 KB Output is correct
24 Correct 56 ms 4500 KB Output is correct
25 Correct 18 ms 3448 KB Output is correct
26 Correct 19 ms 3576 KB Output is correct
27 Correct 18 ms 3576 KB Output is correct
28 Correct 14 ms 3448 KB Output is correct
29 Correct 13 ms 3448 KB Output is correct
30 Correct 2 ms 376 KB Output is correct
31 Correct 42 ms 4216 KB Output is correct
32 Correct 58 ms 4832 KB Output is correct
33 Correct 10 ms 3448 KB Output is correct
34 Correct 10 ms 3452 KB Output is correct
35 Correct 13 ms 3448 KB Output is correct
36 Correct 61 ms 4984 KB Output is correct
37 Correct 143 ms 8028 KB Output is correct
38 Correct 149 ms 8000 KB Output is correct
39 Correct 20 ms 7544 KB Output is correct
40 Correct 427 ms 12792 KB Output is correct
41 Correct 22 ms 8184 KB Output is correct
42 Correct 317 ms 11388 KB Output is correct
43 Correct 127 ms 8536 KB Output is correct
44 Correct 129 ms 8832 KB Output is correct
45 Correct 134 ms 8808 KB Output is correct
46 Correct 371 ms 12528 KB Output is correct
47 Correct 324 ms 11384 KB Output is correct
48 Correct 53 ms 8056 KB Output is correct
49 Correct 33 ms 7800 KB Output is correct
50 Correct 349 ms 11768 KB Output is correct
51 Correct 2 ms 380 KB Output is correct
52 Correct 91 ms 8952 KB Output is correct
53 Correct 417 ms 13060 KB Output is correct
54 Correct 546 ms 14648 KB Output is correct
55 Correct 157 ms 11464 KB Output is correct
56 Correct 504 ms 13816 KB Output is correct
57 Correct 171 ms 11764 KB Output is correct
58 Correct 699 ms 16428 KB Output is correct
59 Correct 483 ms 14172 KB Output is correct
60 Correct 2 ms 376 KB Output is correct
61 Correct 478 ms 14024 KB Output is correct
62 Correct 295 ms 11768 KB Output is correct
63 Correct 199 ms 11140 KB Output is correct
64 Correct 193 ms 10748 KB Output is correct
65 Correct 61 ms 9720 KB Output is correct
66 Correct 181 ms 10688 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 760 KB Output is correct
2 Correct 4 ms 888 KB Output is correct
3 Correct 2 ms 632 KB Output is correct
4 Correct 3 ms 632 KB Output is correct
5 Correct 5 ms 1272 KB Output is correct
6 Correct 4 ms 1016 KB Output is correct
7 Correct 4 ms 888 KB Output is correct
8 Correct 5 ms 1144 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 5 ms 1400 KB Output is correct
11 Correct 8 ms 1656 KB Output is correct
12 Correct 8 ms 1628 KB Output is correct
13 Correct 2 ms 312 KB Output is correct
14 Correct 8 ms 1656 KB Output is correct
15 Correct 7 ms 1528 KB Output is correct
16 Correct 8 ms 1660 KB Output is correct
17 Correct 5 ms 1272 KB Output is correct
18 Correct 7 ms 1528 KB Output is correct
19 Correct 7 ms 1528 KB Output is correct
20 Correct 5 ms 1400 KB Output is correct
21 Correct 31 ms 3448 KB Output is correct
22 Correct 36 ms 3872 KB Output is correct
23 Correct 19 ms 2808 KB Output is correct
24 Correct 56 ms 4500 KB Output is correct
25 Correct 18 ms 3448 KB Output is correct
26 Correct 19 ms 3576 KB Output is correct
27 Correct 18 ms 3576 KB Output is correct
28 Correct 14 ms 3448 KB Output is correct
29 Correct 13 ms 3448 KB Output is correct
30 Correct 2 ms 376 KB Output is correct
31 Correct 42 ms 4216 KB Output is correct
32 Correct 58 ms 4832 KB Output is correct
33 Correct 10 ms 3448 KB Output is correct
34 Correct 10 ms 3452 KB Output is correct
35 Correct 13 ms 3448 KB Output is correct
36 Correct 61 ms 4984 KB Output is correct
37 Correct 143 ms 8028 KB Output is correct
38 Correct 149 ms 8000 KB Output is correct
39 Correct 20 ms 7544 KB Output is correct
40 Correct 427 ms 12792 KB Output is correct
41 Correct 22 ms 8184 KB Output is correct
42 Correct 317 ms 11388 KB Output is correct
43 Correct 127 ms 8536 KB Output is correct
44 Correct 129 ms 8832 KB Output is correct
45 Correct 134 ms 8808 KB Output is correct
46 Correct 371 ms 12528 KB Output is correct
47 Correct 324 ms 11384 KB Output is correct
48 Correct 53 ms 8056 KB Output is correct
49 Correct 33 ms 7800 KB Output is correct
50 Correct 349 ms 11768 KB Output is correct
51 Correct 2 ms 380 KB Output is correct
52 Correct 91 ms 8952 KB Output is correct
53 Correct 417 ms 13060 KB Output is correct
54 Correct 546 ms 14648 KB Output is correct
55 Correct 157 ms 11464 KB Output is correct
56 Correct 504 ms 13816 KB Output is correct
57 Correct 171 ms 11764 KB Output is correct
58 Correct 699 ms 16428 KB Output is correct
59 Correct 483 ms 14172 KB Output is correct
60 Correct 2 ms 376 KB Output is correct
61 Correct 478 ms 14024 KB Output is correct
62 Correct 295 ms 11768 KB Output is correct
63 Correct 199 ms 11140 KB Output is correct
64 Correct 193 ms 10748 KB Output is correct
65 Correct 61 ms 9720 KB Output is correct
66 Correct 181 ms 10688 KB Output is correct
67 Correct 766 ms 18940 KB Output is correct
68 Correct 29 ms 14584 KB Output is correct
69 Correct 397 ms 16692 KB Output is correct
70 Execution timed out 1075 ms 19828 KB Time limit exceeded
71 Halted 0 ms 0 KB -