Pagini recente » Cod sursa (job #1924165) | Cod sursa (job #1243260) | Cod sursa (job #2853424) | Cod sursa (job #1742415) | Cod sursa (job #41271)
Cod sursa(job #41271)
#include <stdio.h>
long long l;
long i,a[30],backup[30],b[30], aux, bul , n,c,nrmin, contor,val[30],j,poz[30];
FILE *f;
int main(void){
f=fopen("shop.in", "rt");
fscanf(f, "%lld %ld %ld", &n, &c, &l);
for(i=1;i<=n;i++){fscanf(f, "%ld %ld", &a[i], &b[i]); poz[i]=i; backup[i]=b[i]; }
bul = 1;
while(bul==1){
bul=0;
for(i=1;i<=n-1;i++)
if(a[i]>a[i+1]){
aux = a[i];
a[i] = a[i+1];
a[i+1] = aux;
aux = b[i];
b[i] = b[i+1];
b[i+1] = aux;
aux=poz[i];
poz[i]=poz[i+1];
poz[i+1]=aux;
bul=1;
}
}
for(i=1;i<=n;i++){
val[i] = 1;
for(j=1;j<=a[i];j++)val[i] = val[i] * c;
}
contor=n+1;
nrmin= 0;
while(l!=0){
if((l>=val[contor])&&(b[contor]!=0)){b[contor]--; l=l-val[contor]; nrmin++;}else{ contor--;}
}
f=fopen("shop.out", "wt");
fprintf(f,"%ld \n", nrmin);
for(i=1;i<=n; i++)
for(j=1;j<=n;j++)
if(poz[j]==i)fprintf(f, "%ld ", backup[i]-b[j]);
fclose(f);
return 0; }