Submission #90936

# Submission time Handle Problem Language Result Execution time Memory
90936 2018-12-25T09:02:39 Z RAkhshon Bank (IZhO14_bank) C++14
71 / 100
1000 ms 732 KB
#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define st string
#define fr first
#define se second
#define INF 1000000000
using namespace std;
ll t=0,kol[101101], m, n,a[101101], b[101101], dp[101101];
void us1(){
    ll s = a[1];
        for(ll j = 1; j <= m; j ++){
            for(ll i = 1; i <= s; i ++){
                if(i >= b[j] && dp[i] == INF && dp[i-b[j]] != b[j] && dp[i-b[j]]!=INF){
                    dp[i]=b[j];
                }
            }
        }
        if(dp[s] == INF){
            printf("NO");
        }
        else
        {
            printf("YES");
        }
}
void chek(ll pos){
    if( pos == n + 1){
        t=1;
        printf("YES");
        exit(0);
    }
    if(a[pos] == 0)
    {
        chek(pos+1);
    }
    for(ll i = a[pos]; i > 0; i --){
        if(kol[i] > 0){
            kol[i]--;
            a[pos]-=i;
            chek(pos);
            a[pos]+=i;
            kol[i]++;
        }
    }
}
int main()
{
    scanf("%lld %lld", &n, &m);
    ll s;
    for(ll i = 1; i <= n; i ++){
        scanf("%lld", &a[i]);
    }
    for(ll i = 1; i <= m; i ++){
        scanf("%lld", &b[i]);
    }
  	for(ll i = 1; i <= a[1]; i ++){
      	dp[i]=INF;
    }
    sort(a+1,a+1+n);
    sort(b+1,b+1+m);
    if(n == 1){
        us1();
        return 0;
    }
    else
    if(n <= 10 && m <= 10){
    do{
    ll sum = 0, num = 1;
    for(ll i = 1; i <= m; i ++){
        sum=sum+b[i];
        if(num == n + 1) break;
        if(sum > a[num]) break;
        if(sum == a[num]) sum=0,num++;
    }
    if(num == n+1){
        printf("YES");
        return 0;
    }
    }while(next_permutation(b+1,b+1+m));
    printf("NO");
        return 0;
    }
        for(ll i = 1; i <= m; i ++){
            kol[b[i]]++;
        }
        chek(1);
        if( t == 0 ){
            printf("NO");
        }
        return 0;
    return 0;
}

Compilation message

bank.cpp: In function 'int main()':
bank.cpp:50:8: warning: unused variable 's' [-Wunused-variable]
     ll s;
        ^
bank.cpp:49:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld %lld", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~
bank.cpp:52:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld", &a[i]);
         ~~~~~^~~~~~~~~~~~~~~
bank.cpp:55:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld", &b[i]);
         ~~~~~^~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 508 KB Output is correct
3 Correct 2 ms 508 KB Output is correct
4 Correct 2 ms 508 KB Output is correct
5 Correct 2 ms 508 KB Output is correct
6 Correct 2 ms 524 KB Output is correct
7 Correct 2 ms 552 KB Output is correct
8 Correct 2 ms 552 KB Output is correct
9 Correct 2 ms 552 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 552 KB Output is correct
2 Correct 7 ms 680 KB Output is correct
3 Correct 2 ms 680 KB Output is correct
4 Correct 4 ms 680 KB Output is correct
5 Correct 19 ms 680 KB Output is correct
6 Correct 2 ms 680 KB Output is correct
7 Correct 2 ms 732 KB Output is correct
8 Correct 3 ms 732 KB Output is correct
9 Correct 38 ms 732 KB Output is correct
10 Correct 8 ms 732 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 732 KB Output is correct
2 Correct 2 ms 732 KB Output is correct
3 Correct 2 ms 732 KB Output is correct
4 Correct 2 ms 732 KB Output is correct
5 Correct 2 ms 732 KB Output is correct
6 Correct 2 ms 732 KB Output is correct
7 Correct 4 ms 732 KB Output is correct
8 Correct 20 ms 732 KB Output is correct
9 Correct 2 ms 732 KB Output is correct
10 Correct 2 ms 732 KB Output is correct
11 Correct 2 ms 732 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 508 KB Output is correct
3 Correct 2 ms 508 KB Output is correct
4 Correct 2 ms 508 KB Output is correct
5 Correct 2 ms 508 KB Output is correct
6 Correct 2 ms 524 KB Output is correct
7 Correct 2 ms 552 KB Output is correct
8 Correct 2 ms 552 KB Output is correct
9 Correct 2 ms 552 KB Output is correct
10 Correct 2 ms 552 KB Output is correct
11 Correct 7 ms 680 KB Output is correct
12 Correct 2 ms 680 KB Output is correct
13 Correct 4 ms 680 KB Output is correct
14 Correct 19 ms 680 KB Output is correct
15 Correct 2 ms 680 KB Output is correct
16 Correct 2 ms 732 KB Output is correct
17 Correct 3 ms 732 KB Output is correct
18 Correct 38 ms 732 KB Output is correct
19 Correct 8 ms 732 KB Output is correct
20 Correct 2 ms 732 KB Output is correct
21 Correct 2 ms 732 KB Output is correct
22 Correct 2 ms 732 KB Output is correct
23 Correct 2 ms 732 KB Output is correct
24 Correct 2 ms 732 KB Output is correct
25 Correct 2 ms 732 KB Output is correct
26 Correct 4 ms 732 KB Output is correct
27 Correct 20 ms 732 KB Output is correct
28 Correct 2 ms 732 KB Output is correct
29 Correct 2 ms 732 KB Output is correct
30 Correct 2 ms 732 KB Output is correct
31 Correct 2 ms 732 KB Output is correct
32 Correct 2 ms 732 KB Output is correct
33 Correct 10 ms 732 KB Output is correct
34 Correct 2 ms 732 KB Output is correct
35 Correct 2 ms 732 KB Output is correct
36 Correct 2 ms 732 KB Output is correct
37 Correct 2 ms 732 KB Output is correct
38 Correct 2 ms 732 KB Output is correct
39 Correct 2 ms 732 KB Output is correct
40 Correct 2 ms 732 KB Output is correct
41 Correct 2 ms 732 KB Output is correct
42 Execution timed out 1071 ms 732 KB Time limit exceeded
43 Halted 0 ms 0 KB -