| ||||||||||
| 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 | |||||||||
虽然知道怎么做,但为什么这么写不对呢var
f:array [0..1001,0..1001] of longint;
l,n,c,i,j:longint;a,b,v,w:array [0..10001] of longint;
function max(a,b:longint):longint;
begin
if a>=b then exit(a) else exit(b);
end;
procedure qsort(p,r:longint);
var
i,j,o,n:longint;
begin
if p<r then
begin
o:=b[random(r-p+1)+p];
i:=p-1;j:=r+1;
while true do
begin
repeat inc(i) until b[i]>=o;
repeat dec(j) until b[j]<=o;
if i<j then begin n:=a[i];a[i]:=a[j];a[j]:=n;
n:=b[i];b[i]:=b[j];b[j]:=n;
n:=w[i];w[i]:=w[j];w[j]:=n;
n:=v[i];v[i]:=v[j];v[j]:=n; end else break;
end;
qsort(p,j);
qsort(j+1,r);
end;
end;
begin
read(l,n,c);
for i:=1 to n do
begin
read(a[i],b[i],v[i],w[i]);
b[i]:=b[i]+a[i];
end;
qsort(1,n);
for i:=1 to n do
for j:=c downto w[i] do
f[b[i],j]:=max(f[a[i],j-w[i]]+v[i],f[b[i],j]);
if f[l,c]<>0 then writeln(f[l,c]) else writeln(-1);
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator