Pagini recente » Cod sursa (job #1603825) | Cod sursa (job #2744972) | Cod sursa (job #2008835) | Cod sursa (job #3041138) | Cod sursa (job #2073120)
#include <stdio.h>
#include <math.h>
void quickSort(long long arr[], long long brr[], int crr[], int left, int right) {
int i = left, j = right;
long long tmp;
int tmp2;
long long pivot = arr[(left + right) / 2];
/* partition */
while (i <= j) {
while (arr[i] > pivot)
i++;
while (arr[j] < pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
tmp = brr[i];
brr[i] = brr[j];
brr[j] = tmp;
tmp2 = crr[i];
crr[i] = crr[j];
crr[j] = tmp2;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, brr, crr, left, j);
if (i < right)
quickSort(arr, brr,crr, i, right);
}
int main(){
long long valM[30], nrM[30], l, nrFol;
int n, c, folM[30], id[30], i;
freopen("shop.in", "r", stdin);
freopen("shop.out", "w", stdout);
scanf("%d %d %lld", &n, &c, &l);
for(i=0;i<n;i++){
scanf("%lld %lld", &valM[i], &nrM[i]);
folM[i]=0;
id[i]=i;
//valM = (long long) pow((double) c, (double) valM[i]);
}
quickSort(valM, nrM, id, 0, n-1);
nrFol=0;
for(i=0;i<n;i++){
valM[i] = (long long) pow((double) c, (double) valM[i]);
folM[id[i]]=l/valM[i];
if(folM[id[i]]>nrM[i]){
folM[id[i]]=nrM[i];
}
l-=folM[id[i]]*valM[i];
nrFol+=folM[id[i]];
}
printf("%lld\n",nrFol);
for(i=0;i<n;i++){
printf("%lld ", folM[i]);
}
return 0;
}