Submission #68540

# Submission time Handle Problem Language Result Execution time Memory
68540 2018-08-17T09:24:51 Z tempytemptemp Bank (IZhO14_bank) C++14
44 / 100
1000 ms 35640 KB
/*
  We found Despacito 5 during contest (not clickbait)
*/
#include	<iostream>
#include	<cstdio>
#include	<vector>
#include 	<set>
#include	<map>
#include	<queue>
#include	<stack>
#include	<algorithm>
#include	<cstring>
#include	<cfloat>
#include	<cmath>
#include	<cassert>
#include	<locale>
#include	<string>
#include	<bitset>
#include	<functional>
#include	<climits>
#include	<iomanip>
using namespace std;

#define read(x)     freopen(x,"r",stdin)
#define write(x)    freopen(x,"w",stdout)
#define cl(a,b)	    memset(a,b,sizeof(a))
#define all(x)      x.begin(),x.end()
#define rall(x)     x.rbegin(),x.rend()
#define ll          long long
#define ld          long double
#define vec         vector
#define vi          vec<int>
#define heap        priority_queue
#define res         reserve
#define pb          push_back
#define f(x,y,z)    for(int x=(y); x<(z); x++)
#define fd(x,y,z)   for(int x=(y); x>=(z); x--)
#define fit(x,y)    for(auto x: y)
#define srt(x)      sort(all(x))
#define rsrt(x)     sort(rall(x))
#define make_unique(x) sort(all((x))); (x).resize(unique(all((x))) - (x).begin())
#define pii         pair<int,int>
#define ppi         pair<pii,int>
#define pip         pair<int,pii>
#define mp          make_pair
#define f1          first
#define s2          second
#define cdbg(x)     cerr<<#x<<" = "<<x<<",\t";
#define cdbl        cerr<<"\n----------\n";
#define pow2(x)     ((x)*(x))
#define edist(x1, y1, x2, y2) (sqrt((pow2(x1-x2)+pow2(y1-y2))))
#define mdist(x1, y1, x2, y2) (abs((x1)-(x2))+abs((y1)-(y2)))
#define y1          FullSensei
#define mid         ((ss+se)>>1)
#define left        (si<<1)
#define right       ((si<<1)+1)
#define pi          3.141592653589793
#define popcount    __builtin_popcount
#define spc			' '
#define endl		'\n'
#define in			insert
#define up_b		upper_bound
#define low_b 		lower_bound
#define Decimal		fixed<<setprecision(20)

bool checkbit(int x,int y){return (x&(1<<y));}
int setbit(int x,int y){return (x^(1<<y));}
const int dirs[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
const int mod=1e9+7;
const int p1=805306457;
const int p2=1610612741;
const int INF=1e9;
const int N=10;
const int M=14;
const int MVAL=1e3;
int a[N+3], b[20+3];
int n, m;
bool dp[N+3][MVAL+3][1<<M];

int main(){
	scanf("%d %d",&n,&m);
	assert((n==1) || (n<=N && m<=M));
	
	f(i,1,n+1)	scanf("%d",&a[i]);
	f(i,0,m)	scanf("%d",&b[i]);
	if(n==1){
		f(k,0,1<<m){
			int sum=0;
			f(l,0,m){
				if(checkbit(k,l)){
					sum+=b[l];
				}
			}
			if(sum == a[1]){
				cout<<"YES"<<endl;
				return 0;
			}
		}
		cout<<"NO"<<endl;
		return 0;
	}
	else{
		f(k,0,1<<m)
			dp[n+1][0][k]=dp[n][0][k]=true;
		fd(i,n,1){
			f(j,0,a[i]+1){
				f(k,0,1<<m){
					if(j==0){
						dp[i][j][k]|=dp[i+1][a[i+1]][k];
//						cerr<<i<<spc<<j<<spc<<k<<spc<<dp[i][j][k]<<endl;
						continue;
					}
					if(k==0)
						continue;
					f(l,0,m){
						if(checkbit(k,l) && j>=b[l]){
							dp[i][j][k]|=dp[i][j-b[l]][setbit(k,l)];
						}
					}
				}
			}
		}
		if(dp[1][a[1]][(1<<m)-1]==1){
			cout<<"YES"<<endl;
		}
		else{
			cout<<"NO"<<endl;
		}
//		f(i,0,a[n]+1){
//			cerr<<dp[n][i][(1<<m)-1]<<endl;
//		}
		return 0;
	}
	return 0;
}
//2 5
//3 2
//2 1 1 1 10

Compilation message

bank.cpp: In function 'int main()':
bank.cpp:81:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
bank.cpp:84:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  f(i,1,n+1) scanf("%d",&a[i]);
             ~~~~~^~~~~~~~~~~~
bank.cpp:85:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  f(i,0,m) scanf("%d",&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 65 ms 508 KB Output is correct
6 Correct 2 ms 508 KB Output is correct
7 Correct 2 ms 516 KB Output is correct
8 Correct 2 ms 536 KB Output is correct
9 Correct 64 ms 584 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 720 KB Output is correct
2 Correct 20 ms 3536 KB Output is correct
3 Correct 87 ms 15440 KB Output is correct
4 Correct 3 ms 15440 KB Output is correct
5 Correct 5 ms 15440 KB Output is correct
6 Correct 4 ms 15440 KB Output is correct
7 Correct 4 ms 15440 KB Output is correct
8 Correct 4 ms 15440 KB Output is correct
9 Correct 45 ms 15440 KB Output is correct
10 Correct 247 ms 35640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1069 ms 35640 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 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 65 ms 508 KB Output is correct
6 Correct 2 ms 508 KB Output is correct
7 Correct 2 ms 516 KB Output is correct
8 Correct 2 ms 536 KB Output is correct
9 Correct 64 ms 584 KB Output is correct
10 Correct 3 ms 720 KB Output is correct
11 Correct 20 ms 3536 KB Output is correct
12 Correct 87 ms 15440 KB Output is correct
13 Correct 3 ms 15440 KB Output is correct
14 Correct 5 ms 15440 KB Output is correct
15 Correct 4 ms 15440 KB Output is correct
16 Correct 4 ms 15440 KB Output is correct
17 Correct 4 ms 15440 KB Output is correct
18 Correct 45 ms 15440 KB Output is correct
19 Correct 247 ms 35640 KB Output is correct
20 Execution timed out 1069 ms 35640 KB Time limit exceeded
21 Halted 0 ms 0 KB -