제출 #1127546

#제출 시각아이디문제언어결과실행 시간메모리
1127546Elwino008은행 (IZhO14_bank)C++20
71 / 100
1095 ms436 KiB
//#pragma GCC optimize ("O3") #include <bits/stdc++.h> using namespace std; #define endl '\n' #define pb push_back #define F first #define S second #define ll long long #define int ll #define pii pair<int, int> #define io ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define M_PI 3.14159265358979323846 #define all(v) v.begin(), v.end() #define pss pair<string, string> #define no cout<<"NO"<<endl; #define yes cout<<"YES"<<endl; #define imp cout<<-1<<endl; #define was cout<<ans<<endl; #define flu cout.flush(); #define Endl endl const int N = 200009; const int mod = 1e9+7; int yx=0; int m, n; vector<int>b, a; map<int, int>used; vector<int>p; void f(int ind, vector<int>q, int sz){ if(ind==m){ yes; exit(0); } int k=b[ind], cem=0, cnt=0; for(int i=0; i<(1<<sz); i++){ cem=0; cnt=0; for(int j=0; j<sz; j++){ if(i&(1<<j)){ cem+=q[j]; used[j]++; cnt++; } } if(cem==k){ if(sz-cnt<(m-ind-1)){ for(int j=0; j<sz; j++){ used[j]=0; } continue; } for(int j=0; j<sz; j++){ if(used[j]==0){ p.pb(q[j]); } } f(ind+1, p, sz-cnt); } for(int j=0; j<sz; j++){ used[j]=0; } p.clear(); } } void solve(){ cin>>m>>n; for(int i=0; i<m; i++){ int x; cin>>x; b.pb(x); } for(int i=0; i<n; i++){ int x; cin>>x; a.pb(x); } sort(all(a)); sort(all(b)); if(n==m){ if(a==b){ yes; } else{ no; } return; } f(0, a, n); no; } signed main(){ io; int t=1; //cin>>t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...