Cod sursa(job #2983284)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 22 februarie 2023 01:01:43
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
//Ilie Dumitru
#include<cstdio>
#include<vector>
#include<bitset>
#include<algorithm>
const int NMAX=5005;

int dp[NMAX];
int N, M;

int main()
{
	FILE* f=fopen("energii.in", "r"), *g=fopen("energii.out", "w");
	int i, j, energie, cost, minCost;
	const int inf=50000000;
	minCost=inf;

	fscanf(f, "%d%d", &N, &M);
	for(j=0;j<M;++j)
		dp[j]=inf;

	for(i=0;i<N;++i)
	{
		fscanf(f, "%d%d", &energie, &cost);
		if(energie>=M)
		{
			if(cost<minCost)
				minCost=cost;
		}
		else
		{
			for(j=M-1;j>-1;--j)
			{
				if(j+energie>=M)
				{
					if(minCost>dp[j]+cost)
						minCost=dp[j]+cost;
				}
				else
				{
					if(dp[j+cost]>dp[j]+energie)
						dp[j+cost]=dp[j]+energie;
				}
			}
		}
	}

	if(minCost==inf)
		minCost=-1;
	fprintf(g, "%d\n", minCost);

	fclose(f);
	fclose(g);
	return 0;
}