Submission #90936

#TimeUsernameProblemLanguageResultExecution timeMemory
90936RAkhshonBank (IZhO14_bank)C++14
71 / 100
1071 ms732 KiB
#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 (stderr)

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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...