Submission #489834

#TimeUsernameProblemLanguageResultExecution timeMemory
489834dawangkBank (IZhO14_bank)C++14
100 / 100
116 ms8528 KiB
#include <bits/stdc++.h> using namespace std; //#include <ext/rope> //using namespace __gnu_cxx; #include <ext/pb_ds/assoc_container.hpp> #include <stdlib.h> using namespace __gnu_pbds; //#pragma GCC optimize("Ofast,unroll-loops") //#pragma GCC target("avx,avx2,fma") #define inputJunk ios_base::sync_with_stdio(0); cin.tie(0); #define pb push_back #define f first #define s second #define all(x) x.begin(), x.end() #define debug cout<<"HERE"<<endl; #define ell "\n" //#define x real() //#define y imag() typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pi; typedef pair<ll, ll> pll; typedef pair<int, pi> trip; typedef pair<pll, ll> tripll; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<pi> vpi; typedef vector<pll> vpll; typedef vector<trip> vtrip; typedef vector<tripll> vtripll; typedef complex<double> point; const int INF = 1e9+1212; const ll INFLL = 1e12+1212; const ll P = 9973, M = 1e9+9; const int MM = 1e3+5; int mod = 1e9+7;//99824435 int n, m, arr1[22], arr2[22]; int main(){ inputJunk cin>>n>>m; for(int i= 0;i<n;i++){ cin>>arr1[i]; } for(int i= 0;i<m;i++){ cin>>arr2[i]; } vi covered((1<<m), -1), leftover((1<<m), -1); leftover[0] = 0; covered[0] = 0; for(int mask = 1;mask<(1<<m);mask++){ for(int i = 0;i<m;i++){ if((1<<i)&mask){ int prev = mask-(1<<i); if(covered[prev]==-1){continue;} if(leftover[prev]+arr2[i]==arr1[covered[prev]]){ covered[mask] = covered[prev]+1; leftover[mask] = 0; }else if(leftover[prev]+arr2[i]<arr1[covered[prev]]){ covered[mask] = covered[prev]; leftover[mask] = leftover[prev]+arr2[i]; } } } if(covered[mask]==n){cout<<"YES"<<ell;return 0;} } cout<<"NO"<<ell; } /*CUSTOM TEST CASE 1 */ /*CUSTOM TEST CASE 2 */ /*CUSTOM TEST CASE 3 */ /*Comments of Shame - floating error (use integer division instead) - cin vs getline - upperbound and lowerbound returns iteratorsf - use long long when number is big enough - for dp invalid cases needs to be skipped - some base cases won't work (review cow poetry) - always check bounds, some TLE are due to incorrect bounds! - dont mess up return types = RESET ARRAYS!!!!!!!!!! - USE UR BRAIN - INF setting problems - push vs pb - check if things are used properly - read the PROBLEM (directed vs undirected graph) */ /* freopen("time.in","r", stdin); freopen("time.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...