UVA-394 Mapmaker Solution

#include <stdio.h>
void compute();
int index;
int ranges[10];
char n[20][11];
int base[20];
int size[20];
int D[20];
int limit[20][20];
int lim;
int main()
{
int N, R;
scanf("%d %d",&N,&R);
int i = 0;
while (N--)
{
scanf("%s %d %d %d", n[i], &base[i], &size[i], &D[i]);
int temp = 0;
int stop = (D[i] << 1);
while (temp !=stop )
{

scanf("%d", &limit[i][temp++]);
}
i++;
}
while (R--)
{
char name[11];
scanf("%s", name);
i = 0;
while (1)
{
if (!strcmp(name, n[i]))
break;
i++;
}
index = i;
i = 0;
lim = D[index];
while (i != lim)
scanf("%d", &ranges[i++]);
compute();
}
return 0;
}
void compute()
{
int t = lim;
int i;
int CD = size[index];
int result = size[index] * ranges[--lim];
int C0 = base[index] - (CD*limit[index][2*lim]);
while (lim){
CD = CD*(limit[index][2 * lim + 1] - limit[index][2 * lim] + 1);
result += (ranges[--lim] * CD);
C0 -= CD*limit[index][2 * lim];
}
result += C0;
printf("%s[", n[index]);
for (i = 0; i < t-1; i++){
printf("%d, ", ranges[i]);
}
printf("%d] = %d\n", ranges[t - 1], result);
}

Comments

Popular Posts