Greedy Gift Givers,done!

/*
ID:hejiek1
LANG: C
TASK:gift1
*/
#include
#include
#include
FILE *fp;
char **a;
int *b;
int who(int n)
{
    int i;
    char buf[15];
   fscanf(fp,"%s",buf);
   for(i=0;i        if(!strncmp(buf,a[i],15))
            return i;
}
void output(int n){
    int i;
    fp=fopen("gift1.out","w");
    for(i=0;i    {
        fprintf(fp,"%s %d",a[i],b[i]);
        fprintf(fp,"n",n);
    }
}

int main (int argc, char const* argv[]) {
    int n,i,j,give,m,tmp;
    fp=fopen("gift1.in","r");
    fscanf(fp,"%d",&n);
    b=(int *)malloc(n*sizeof(int));
    memset(b,0,sizeof(b));
    a=(char**)malloc(n*sizeof(char*));
    for(i=0;i       a[i]=(char*)malloc(15*sizeof(char));
    for(i=0;i        fscanf(fp,"%s",a[i]);
    while(1)
    {
        j=who(n);
        tmp=fscanf(fp,"%d%d",&give,&m);
        if(tmp<=0)break;
        if(m!=0)
        {
            b[j]+=give%m-give;
            for(i=0;i            {
                     j=who(n);
                     b[j]+=give/m;
            }
        }
    }
    output(n);
    return 0;
}</div>