Cod sursa(job #1248690)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 25 octombrie 2014 20:10:57
Problema Ghiozdan Scor 46
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
using namespace std;
ifstream fi("ghiozdan.in");
ofstream fo("ghiozdan.out");

const int MAX_N = 20004;
const int MAX_G = 75004;

int greutate[MAX_N];
bool este[MAX_G];
int last[MAX_G];
int nr[MAX_G];
int sol,gmax;
int i,j,n;

int main(){
    fi>>n>>gmax;
    for(i=1;i<=n;i++) fi>>greutate[i];
    
    este[0]=1;
    last[0]=0;
    nr[0]=0;
    for(j=1;j<=gmax;j++) nr[j]=n+5;
    
    for(i=1;i<=n;i++)
      for(j=gmax;j>=greutate[i];j--)
        if(este[j-greutate[i]] && (nr[j-greutate[i]]+1<nr[j]))
          {
           este[j]=1;
           last[j]=greutate[i];
           nr[j]=nr[j-greutate[i]]+1;
           if(j>sol) sol=j;
          }
             
    fo<<sol<<" "<<nr[sol]<<"\n";
    
    for(j=sol;j>=0;--j)
      if(nr[j]+1==nr[sol])
        {
         fo<<sol-j<<"\n";
         sol=j;
        }
    
    fi.close();
    fo.close();
    return 0;
}