Cod sursa(job #212168)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 4 octombrie 2008 15:30:17
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>
#include <vector>
using namespace std;

const int N=10010;
const int INF=20000000;

int n,w,e[N][2],minn;
vector<int> v(5001,INF);
void read(){
	int i;
	freopen("energii.in","r",stdin);
	scanf("%d%d",&n,&w);
	for (i=1;i<=n;++i)
		scanf("%d%d",&e[i][0],&e[i][1]);
}
void solve(){
	v[0]=0;
	for(int i=1;i<=n;++i)
		for(int j=w-1;j>=0;--j)
			if(v[j]!=INF){
				if(j+e[i][0] >= w && v[j]+e[i][1] < v[w])
					v[w] = v[j]+e[i][1];
				if(j+e[i][0] < w && v[j]+e[i][1] < v[j+e[i][0]])
					v[j+e[i][0]] = v[j]+e[i][1];
			}
	if(v[w]==INF)
		minn=-1;
	else
		minn=v[w];
}
void write(){
	freopen("energii.out","w",stdout);
	printf("%d\n",minn);
}
int main(){
	read();
	solve();
	write();
}