Submission #949221

#TimeUsernameProblemLanguageResultExecution timeMemory
949221Faisal_SaqibTug of War (BOI15_tug)C++17
18 / 100
1 ms604 KiB
#include <bits/stdc++.h> using namespace std; const int N=21; int l[N],r[N],s[N],k; int midif=1e9; void choose(int total,int cho,set<int>& left,set<int>& right,int suml=0,int sumr=0) { if(cho==0 and total==0) { midif=min(midif,abs(suml-sumr)); if(midif<=k) { cout<<"YES\n"; exit(0); } return; } if(total==0) return; { // Case#1: We don't take total auto it=left.find(l[total]); if(it!=left.end()) { left.erase(it); choose(total-1,cho,left,right,suml+s[total],sumr); left.insert(l[total]); } } if(cho!=0) { // Case#2: We Go to right side auto it=right.find(r[total]); if(it!=right.end()) { right.erase(it); choose(total-1,cho-1,left,right,suml,sumr+s[total]); right.insert(r[total]); } } } int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int n; cin>>n>>k; for(int i=1;i<=(2*n);i++) cin>>l[i]>>r[i]>>s[i]; set<int> left,right; for(int i=1;i<=n;i++) { left.insert(i); right.insert(i); } choose(2*n,n,left,right); cout<<"NO\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...