USACO Greedy Gift Givers
给别人的钱是要均分的,没有小数点,分不尽就给自己,注意的是,拿出去分的是自己的钱,所以 分的人的钱=分的人原本的钱-拿出来分的钱+分不尽的钱
/* ID: kdk5501 TASK : gift1 LANG : C++ */ #include#include #include <string> using namespace std; struct people { string name; int money; }person[110]; int main() { freopen("gift1.in","r",stdin); freopen("gift1.out","w",stdout); int n; cin>>n; for(int i=1;i<=n;i++) { cin>>person[i].name; person[i].money=0; } int m=n; for(int i=1;i<=n;i++) { string op; cin>>op; int sum,t,temp,add=0; cin>>sum>>t; if(t==0) { for(int i=1;i<=n;i++) { if(person[i].name==op) { person[i].money+=sum; break; } } continue; } temp=sum/t; for(int i=1;i<=t;i++) { string na; cin>>na; for(int i=1;i<=n;i++) { if(person[i].name==na) { person[i].money+=temp; break; } } } for(int i=1;i<=n;i++) { if(person[i].name==op) { person[i].money-=sum; person[i].money+=(sum-temp*t); } } } for(int i=1;i<=n;i++) { cout< " "< endl; } return 0; }