Cod sursa(job #18374)

Utilizator mastermageSchneider Stefan mastermage Data 18 februarie 2007 11:48:16
Problema Ghiozdan Scor 6
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.78 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

#define maxN 100
#define maxG 100

int n,g,vec[maxN],din[maxG],his[maxG],gmax,nmin;

void inputFunc(){
	FILE*fi=fopen("ghiozdan.in","r");
	fscanf(fi,"%d %d",&n,&g);
	for(int i=0;i<n;i++){
		fscanf(fi,"%d",vec+i);
	}
	fclose(fi);
}

void outputFunc(){
	FILE*fi=fopen("ghiozdan.out","w");
	fprintf(fi,"%d %d",gmax,nmin);
	fclose(fi);
}

bool gr(int a,int b){return a>b;}

int main(){
	inputFunc();
	sort(vec,vec+n,gr);
	for(int i=0;i<n;i++){
		int c=vec[i];
		for(int j=g-c;j>0;j--)if(din[j]){
			if(din[j]+1 < din[j+c] || !din[j+c])din[j+c]=din[j]+1,his[j+c]=c;
		}
		din[c]=1;his[c]=-1;
	}
	for(int i=g;i>=0;i--)if(din[i]){gmax=i;break;}; nmin=din[gmax];
	
	
	
	outputFunc();
	return 0;
}