PASCAL USACO Greedy Gift Givers 的题解

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:48:38
USACO里的题目 本来可以运行的 可是被我改了1小下...不行了...
各位大哥大姐,天才高手帮我看那哪错拉!!~~~
万分感激!~~~~~~~Thank you !!
program gift1;
type
ren=array[1..10]of string[14];
nem=record
name:string;
gave,reci,shou,shou2,sheng,na,duo:integer;
wasd:ren;
end;
var pro:array[2..10]of nem;
i1,n,i,j,s,k:longint;
begin
readln(n);
for i1:=1 to n do
readln(pro[i1].name);
for i:=1 to n do
begin readln(pro[i].name);
readln(pro[i].reci,pro[i].shou);
if pro[i].shou<>0
then begin
for j:=1 to pro[i].shou do
begin
read(pro[i].wasd[j]);
for k:=1 to n do
if pro[k].name=pro[i].wasd[j] then
begin
pro[k].shou2:=pro[k].shou2+1;
pro[k].na:=pro[k].na+(pro[i].reci)mod(pro[i].shou);
end;

var n,i,j,k,p,t,dd:longint;
s:string;
name:array[1..12]of string;
qian:array[1..12]of longint;
function find(x:string):longint;
var i:longint;
begin
for i:=1 to n do
if name[i]=x then
begin
find:=i;
break;
end;
end;
begin
assign(input,'gift1.in');reset(input);
assign(output,'gift1.out');rewrite(output);
//while not eof do
//begin
readln(n);
for i:=1 to n do
begin
readln(name[i]);
qian[i]:=0;
end;
for i:=1 to n do
begin
readln(s);
p:=find(s);
readln(dd,t);
for j:=1 to t do
begin
readln(s);
k:=find(s);//平均分配
qian[p]:=qian[p]-dd div t;//给人多少
qian[k]:=qian[k]+dd div t;//减少多少
end;
end;
for i:=1 to n do writeln(name[i],' ',qian[i]);
//end;
close(input);close(output);
end.