| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Test Error?我在usaco交了几遍都是AC的,到了这儿无论怎么都是wrong,我写了链表的和模拟链表的都wrong,可是usaco明明是对的,为什么?
{
LANG:PASCAL
PROG:alake
}
program alake;
const
maxn=100001;
var
h,w,pre,next:array[0..maxn] of longint;
ans:array[1..maxn] of int64;
n,i,m:longint;
t:int64;
begin
assign(input,'alake.in');reset(input);
assign(output,'alake.out');rewrite(output);
read(n);
h[0]:=maxlongint;
h[n+1]:=maxlongint;
m:=1;
for i:=1 to n do begin
read(w[i],h[i]);
pre[i]:=i-1;next[i]:=i+1;
if h[i]<h[m] then m:=i;
end;
while h[m]<maxlongint do begin
ans[m]:=t+w[m];
next[pre[m]]:=next[m];
pre[next[m]]:=pre[m];
if h[pre[m]]<h[next[m]] then begin
t:=t+trunc(w[m]*1.0*(h[pre[m]]-h[m]));
inc(w[pre[m]],w[m]);
m:=pre[m];
while (m>0)and(h[pre[m]]<h[m]) do m:=pre[m];
end else begin
t:=t+trunc(w[m]*1.0*(h[next[m]]-h[m]));
inc(w[next[m]],w[m]);
m:=next[m];
while (m>0)and(h[next[m]]<h[m]) do m:=next[m];
end;
end;
for i:=1 to n do writeln(ans[i]);
close(output);
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator