Cod sursa(job #3172875)

Utilizator dragusanu.raresDragusanu Rares dragusanu.rares Data 21 noiembrie 2023 14:50:19
Problema Zebughil Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
#define int long long
int n,G,mincnt,v[18];
void dfs(int cnt,vector<int> s){
    int ssize=s.size();
    if(ssize>=mincnt)return;
    if(cnt==n){
        for(int i=0;i<ssize;i++)if(s[i]+v[n]<=G){
            mincnt=min(mincnt,ssize);
            return;
        }
        mincnt=min(mincnt,ssize+1);
    }
    for(int i=0;i<ssize;i++){
        if(s[i]+v[cnt]<=G){
            s[i]+=v[cnt];
            dfs(cnt+1,s);
            s[i]-=v[cnt];
        }
    }
    s.push_back(v[cnt]);
    dfs(cnt+1,s);
}
signed main(){
	ifstream cin("zebughil.in");
	ofstream cout("zebughil.out");
	for(int t=0;t<3;t++){
        cin>>n>>G;
        for(int i=1;i<=n;i++)cin>>v[i];
        mincnt=20;
        dfs(1,{});
        cout<<mincnt<<"\n";
	}
}