USACO第二题gift1,礼物

这道题也十分简单,暴力枚举即可。

代码很容易理解,看一下就会了。

但是这道题可以使用stcut这样的结构体,可以便于理解。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
struct node{
	char s[100];
	int n,m,j,k,i,sum,ans;
};
struct node a[100];
char f[100],p[100];
int n;
int find(char *w){
	for(int i=1;i<=n;i++)
		if(strcmp(w,a[i].s)==0)
			return i;
	return -1;
}

int main(){
	freopen("gift1.in","r",stdin);
	freopen("gift1.out","w",stdout);
	int m,j,k,i;
	scanf("%d",&n);
	getchar();
	for(i=1;i<=n;i++){
		scanf("%s",&a[i].s);
		getchar();
	}
	for(i=1;i<=n;i++){
		scanf("%s",&f);
		j=find(f);
		scanf("%d%d",&a[j].sum,&a[j].m);
		getchar();
		if(a[j].m==0)
			continue;
		a[j].k=a[j].sum/a[j].m;
		a[j].ans+=a[j].sum%a[j].m;	
		for(k=1;k<=a[j].m;k++){
			scanf("%s",&p);
			a[find(p)].ans+=a[j].k;
		}
	}
	for(i=1;i<=n;i++){
		printf("%s",a[i].s);
		printf(" %d\n",a[i].ans-a[i].sum);
	}
	return 0;
}

注意!需要使用文件输入输出!
 

你可能感兴趣的:(USACO第二题gift1,礼物)