Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

又开始做USACO?
反正很水,但是很绕。注意送人剩下的钱不能算得到的。

#include<bits/stdc++.h>
using namespace std;

const int MAXN=15;

struct mem{
	string name;
	int money;
} a[MAXN];

int n;

int fnd(string nm){
	for(int i=1;i<=n;++i){
		if(a[i].name==nm){
			return i;
		}
	}
	return 0;
}

int main(){
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>a[i].name;
	}
	string name;//名字 
	for(int l=1;l<=n;++l){
		int yq,rs;//原有的钱、人数 
		cin>>name>>yq>>rs;
		int fd=fnd(name);
		if(rs==0){
			a[fd].money+=yq;
			continue;
		}
		a[fd].money-=(yq-yq%rs);
		yq/=rs;
		for(int i=1;i<=rs;++i){
			string sr;//送的人 
			cin>>sr;
			int fd2=fnd(sr);
			a[fd2].money+=yq;
		}
	}
	
	for(int i=1;i<=n;++i){
		cout<<a[i].name<<' '<<a[i].money<<'\n';
	}
	
	return 0;
}

评论