Pagini recente » Cod sursa (job #1453139) | Cod sursa (job #1352858) | Cod sursa (job #2314123) | Cod sursa (job #896833) | Cod sursa (job #550936)
Cod sursa(job #550936)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FARA_NUMAR 1005
#define MARE 5894759
#define LANTZ_DA_HAUR_MERITA_SHMEKERU 0
FILE *teancu_da_lei_vechi=fopen("energii.in", "r"), *teancu_da_euroi=fopen("energii.out", "w");
long sum[10011000], i, j, n, k, s;
typedef struct am_valoare_si_bishtari
{
int e, c;
};
am_valoare_si_bishtari v[FARA_NUMAR];
void da_valoare_la_jupan()
{
long c=0;
fscanf(teancu_da_lei_vechi, "%ld%ld", &n, &k);
for (i=1;i<=n;i++)
{
fscanf(teancu_da_lei_vechi, "%d%d", &v[i].e, &v[i].c);
s+=v[i].e;
c+=v[i].c;
}
if (s<k)
{
fprintf(teancu_da_euroi, "-1");
exit(LANTZ_DA_HAUR_MERITA_SHMEKERU);
fclose(teancu_da_lei_vechi);
fclose(teancu_da_euroi);
}
else
if (s==k)
{
fprintf(teancu_da_euroi, "%ld", c);
exit(LANTZ_DA_HAUR_MERITA_SHMEKERU);
fclose(teancu_da_lei_vechi);
fclose(teancu_da_euroi);
}
memset(sum, MARE, 10010500);
}
void dau_bishtari_la_lautari()
{
for (i=1;i<=n;i++)
{
for (j=k;j>=0;j--)
if (sum[j]!=MARE&&sum[j+v[i].e]>sum[j]+v[i].c)
sum[j+v[i].e]=sum[j]+v[i].c;
if (sum[v[i].e]>v[i].c)
sum[v[i].e]=v[i].c;
}
}
void mor_dusmanii_cand_scot_banu()
{
long cel_mai_shukar_puradel=MARE;
for (i=k;i<=s;i++)
if (sum[i]<cel_mai_shukar_puradel)
cel_mai_shukar_puradel=sum[i];
fprintf(teancu_da_euroi, "%ld", cel_mai_shukar_puradel);
}
int main()
{
da_valoare_la_jupan();
dau_bishtari_la_lautari();
mor_dusmanii_cand_scot_banu();
fclose(teancu_da_lei_vechi);
fclose(teancu_da_euroi);
return (LANTZ_DA_HAUR_MERITA_SHMEKERU);
}