Cod sursa(job #1806613)

Utilizator CrystyAngelDinu Cristian CrystyAngel Data 15 noiembrie 2016 16:10:44
Problema Zebughil Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("zebughil.in");
ofstream fout("zebughil.out");

int block[20];
int p[20];
int v[20];
int save[20];
int n,g,i,nr,curr,ans,j;

int main()
{
    p[0]=1;
    for(i=1; i<=18; ++i)
        p[i]=2*p[i-1];
    int t = 3;
    while(t--)
    {
        fin>>n>>g;
        for(i=0; i<n; ++i)
            fin>>v[i];
        nr=0;
        while(n)
        {
            for(i=0; i<n; ++i)
                save[i]=0;
            ans=0;
            for(i=1; i<p[n]; ++i)
            {
                curr=0;
                for(j=0; j<n; ++j)
                    if(p[j]&i)
                       curr+=v[j];
                if(curr<=g && curr>ans)
                {
                    ans=curr;
                    for(j=0; j<n; ++j)
                        save[j]=p[j]&i;
                }
            }
            for(i=0; i<n; ++i)
                if(save[i])
                    v[i]=-1;
            for(i=0; i<n; ++i)
                if(v[i]==-1)
                {
                    for(j=i; j<n-1; ++j)
                        v[j]=v[j+1];
                    --i;
                    --n;
                }
            ++nr;
        }
        fout<<nr<<'\n';
    }
}