제출 #1098302

#제출 시각아이디문제언어결과실행 시간메모리
1098302vjudge1은행 (IZhO14_bank)C++17
0 / 100
81 ms49756 KiB
//#pragma optimize ("g",on) //#pragma GCC optimize ("unroll-loops") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #define int long long #define ll int #define db double #define ld long double #define pb push_back #define pf push_front #define ppb pop_back() #define ppf pop_front() #define len(x) (int)x.size() #define vi vector<int> #define vpii vector<pair<int,int>> #define vvi vector<vi> #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define mii map<int,int> #define y1 u_will_not_notice_this15 #define tm (tl+tr>>1) #define ls v<<1,tl,tm #define rs v<<1|1,tm+1,tr #define pii pair<int,int> #define lb lower_bound #define ub upper_bound #define f first #define s second #define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> #define str string #define ins insert #define elif else if using namespace std; using namespace __gnu_pbds; const int maxn=(1<<21),mod=1e9+7,inf=1e18,bir=1,nol=0; const bool TEST=0; const str tch="+abcdefghijklmnopqrstuvwxyz",Tch="+ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const str Saturday_08_10_24[5]={"NO\n","YES\n","-1\n","0\n","1\n"}; void at(int ok){cout<<Saturday_08_10_24[ok];} bool bit(int mask,int i){return ((bir<<i)&mask);} int gcd(int a,int b){while(b){if(a>b) swap(a,b);b%=a;}return a;} int lcm(int a,int b){return a/gcd(a,b)*b;} int rnd(){return (rand()<<15)^rand();} int bpm(int a,int b){a%=mod;if(b==0) return 1;if(b&1)return bpm(a,b-1)*a%mod;int x=bpm(a,b>>1);return x*x%mod;} int bp(int a,int b){if(b==0) return 1;if(b&1)return bp(a,b-1)*a;int x=bp(a,b>>1);return x*x;} //CODE STARTS HERE: //don't get stuck on one aproach int n,m,k,a[23],b[23],dp[23][maxn]; vi can[maxn]; void whyareucopying(){ cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++)cin>>b[i]; for(int mask=1;mask<(bir<<m);mask++){ int sum=0; for(int i=0;i<m;i++)if(bit(mask,i))sum+=(bir<<i); if(sum<=1000)can[sum].pb(mask); } dp[0][0]=1; vi v={0}; for(int i=1;i<=n;i++){ vi vv; for(auto it:can[a[i]]){ for(auto ti:v){ if((it&ti))continue; dp[i][it|ti]=1; if(i==n){ at(1);return; } vv.pb(it|ti); } } v=vv; } at(0); } signed main(){ // freopen("txt.in","r",stdin),freopen("txt.out","w",stdout); ios_base::sync_with_stdio(0),cin.tie(0); srand(time(0)); int T=1; if(TEST)cin>>T; for(int i=1;i<=T;i++){ // cout<<"Case "<<i<<": "; whyareucopying(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...