#include <stdio.h>
int grapes(int n) { return n > 1 ? 0.8 * n : n; }
int apples(int n) { return (n / 2 | 0) + n % 2; }
int normal(int n) { return n; }
int prices[] = {10,20,30};
int (*f[])(int) = {grapes, apples, normal};
int total(int counts[]){
int sum=0;
for (int i=0;i<2;++i) sum+=(*f[i])(counts[i])*prices[i];
return sum;
}
int main() {
#define OUT(a,b,c) printf("%d\n",total( ((int[]){a,b,c} )));
OUT(1,0,1);
OUT(2,0,1);
OUT(3,0,1);
OUT(4,0,1);
OUT(4,1,1);
OUT(4,2,1);
OUT(4,3,1);
#undef OUT
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZ3JhcGVzKGludCBuKSAgeyByZXR1cm4gbiA+IDEgPyAwLjggKiBuIDogbjsgfQppbnQgYXBwbGVzKGludCBuKSAgeyByZXR1cm4gKG4gLyAyIHwgMCkgKyBuICUgMjsgfSAKaW50IG5vcm1hbChpbnQgbikgIHsgcmV0dXJuIG47IH0gCgppbnQgcHJpY2VzW10gPSB7MTAsMjAsMzB9OwppbnQgKCpmW10pKGludCkgPSB7Z3JhcGVzLCBhcHBsZXMsIG5vcm1hbH07IAoKaW50IHRvdGFsKGludCBjb3VudHNbXSl7CglpbnQgc3VtPTA7Cglmb3IgKGludCBpPTA7aTwyOysraSkgc3VtKz0oKmZbaV0pKGNvdW50c1tpXSkqcHJpY2VzW2ldOwoJcmV0dXJuIHN1bTsKfQoKaW50IG1haW4oKSB7CgoJI2RlZmluZSBPVVQoYSxiLGMpIHByaW50ZigiJWRcbiIsdG90YWwoICgoaW50W10pe2EsYixjfSApKSk7CglPVVQoMSwwLDEpOwoJT1VUKDIsMCwxKTsKCU9VVCgzLDAsMSk7CglPVVQoNCwwLDEpOwoJT1VUKDQsMSwxKTsKCU9VVCg0LDIsMSk7CglPVVQoNCwzLDEpOwoJI3VuZGVmIE9VVAoKCXJldHVybiAwOwp9Cg==