也是很單純的simulation題,唯一要注意的是gift taker數量可能為0,要排除除以0的情況。
CODE
#include <stdio.h>
#include <string.h>
#define MAX_P 10
#define MAX_LEN 12
int n;
char names[MAX_P][MAX_LEN+1];
int findname(char *name);
int main(){
int i, j, k, flag;
int gift, taker, net[MAX_P];
char s[MAX_LEN+1];
flag = 0;
while( scanf("%d", &n) != EOF ){
if( flag == 1 )
printf("\n");
for(i=0; i<n; i++){
scanf("%s", names[i]);
net[i] = 0;
}
for(i=0; i<n; i++){
scanf("%s %d %d", s, &gift, &taker);
k = findname(s);
if( taker != 0 ){
net[k] -= gift;
net[k] += (gift % taker);
gift /= taker;
}
for(j=0; j<taker; j++){
scanf("%s", s);
k = findname(s);
net[k] += gift;
}/*j: give gift to taker*/
}/*i*/
for(i=0; i<n; i++)
printf("%s %d\n", names[i], net[i]);
flag = 1;
}/*while more groups data*/
exit(0);
}
int findname(char *s){
int i;
for(i=0; i<n; i++)
if( strcmp(s, names[i]) == 0 )
return i;
}
No comments:
Post a Comment