p1946.pas
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 87 行
PAS
87 行
PROGRAM p1946;
const
maxn = 20;
type
node = record
name : String;
money : Longint;
end;
Tdata = array[1..maxn] of node;
VAR
step : Integer;
n , t , i , a , b , p , code : Longint;
data : Tdata;
s , c : String;
FUNCTION Find ( var s : String ) : Longint;
var
i : Longint;
begin
for i := 1 to n do
if data [i] . name = s then exit ( i );
exit ( 0 );
end;
PROCEDURE Print ;
var
i , j , temp : Longint;
begin
i := 1;
j := 1;
while ( i <= n ) do
if data [i] . money < 0 then
begin
while ( data [j] . money <= 0 ) do inc ( j );
if abs ( data [i] . money ) > abs ( data [j] . money ) then
temp := abs ( data [j] . money )
else temp := abs ( data [i] . money );
writeln ( data [j] . name , ' ' , data [i] . name ,' ', temp );
dec ( data [j] . money , temp );
inc ( data [i] . money , temp );
end else inc ( i );
end;
BEGIN
step := 0;
readln ( n , t );
while ( n > 0 ) do
begin
inc ( step );
writeln ( 'Case #' , step );
for i := 1 to n do
begin
readln ( data [i] .name );
data [i] . money := 0;
end;
for i := 1 to t do
begin
readln ( s );
c := copy ( s , 1 , pos ( ' ' , s ) - 1 );
a := find ( c );
delete ( s , 1 , pos ( ' ' , s ) );
c := copy ( s , 1 , pos ( ' ' , s ) - 1);
b := find ( c );
delete ( s , 1 , pos ( ' ' , s ) );
val ( s , p , code );
dec ( data [a] . money , p );
inc ( data [b] .money , p );
end;
print;
writeln;
readln ( n , t );
end;
END.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?