{ NOTE: it is recommended to use this even if you don't understand the following code. }
{ constraints }
const
MAXD = 1000;
MAXY = 1000000;
{ input data }
var
C, D, Y, i : longint;
// Warning! M and P are 1-based
M, P : array[1..MAXD] of longint;
cumulative : array[1..MAXD] of longint;
DP : array[0..MAXY] of longint;
j, k, u : longint;
useful : array[0..MAXD] of longint;
begin
{
uncomment the following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
readln(C, D, Y);
// Warning! M and P are 1-based
for i:=1 to D do
read(M[i]);
readln();
for i:=1 to D do
read(P[i]);
readln();
cumulative[1] := M[1];
for i:=2 to D do
cumulative[i] := cumulative[i-1] + M[i];
for i:=1 to D do
begin
cumulative[i] := cumulative[i] + C;
cumulative[i] := cumulative[i] - P[i];
end;
for i:=1 to D do write (cumulative[i],' '); writeln;
DP[0] := 0;
for i:= 1 to Y do
DP[i] := 2000000000;
u := 0;
for i:= 0 to D do
begin
for j:=1 to D do
begin
if (i+j <= Y) then
begin
if (DP[i+j] >= DP[i] + cumulative[j]) then
DP[i+j] := DP[i] + cumulative[j];
end;
end;
if ((i <= Y) and (DP[i] = cumulative[i])) then
begin
useful[u] := i;
u := u+1;
end;
end;
for i:= 0 to D do write( DP[i], ' '); writeln;
for i:=0 to 5 do write(useful[i],' '); writeln;
for i:= D to Y do
begin
for k:=0 to u-1 do
begin
j := useful[k];
if (i+j <= Y) then
begin
if (DP[i+j] >= DP[i] + cumulative[j]) then
DP[i+j] := DP[i] + cumulative[j];
end;
end;
end;
for i:=1 to y do write (cumulative[i],' '); writeln;
writeln(DP[Y]); { print result }
end.
eyBOT1RFOiBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBldmVuIGlmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHRoZSBmb2xsb3dpbmcgY29kZS4gfQoKeyBjb25zdHJhaW50cyB9CmNvbnN0CiAgICBNQVhEID0gMTAwMDsKICAgIE1BWFkgPSAxMDAwMDAwOwoKeyBpbnB1dCBkYXRhIH0KdmFyCiAgICBDLCBELCBZLCBpICA6IGxvbmdpbnQ7CiAgICAvLyBXYXJuaW5nISBNIGFuZCBQIGFyZSAxLWJhc2VkCiAgICBNLCBQICAgICAgICA6IGFycmF5WzEuLk1BWERdIG9mIGxvbmdpbnQ7CiAgICBjdW11bGF0aXZlICA6IGFycmF5WzEuLk1BWERdIG9mIGxvbmdpbnQ7CiAgICBEUCA6IGFycmF5WzAuLk1BWFldIG9mIGxvbmdpbnQ7CiAgICBqLCBrLCB1IDogbG9uZ2ludDsKICAgIHVzZWZ1bCA6IGFycmF5WzAuLk1BWERdIG9mIGxvbmdpbnQ7CgpiZWdpbgp7CiAgICB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lcyBpZiB5b3Ugd2FudCB0byByZWFkL3dyaXRlIGZyb20gZmlsZXMKICAgIGFzc2lnbihpbnB1dCwgICdpbnB1dC50eHQnKTsgIHJlc2V0KGlucHV0KTsKICAgIGFzc2lnbihvdXRwdXQsICdvdXRwdXQudHh0Jyk7IHJld3JpdGUob3V0cHV0KTsKfQoKICAgIHJlYWRsbihDLCBELCBZKTsKICAgIC8vIFdhcm5pbmchIE0gYW5kIFAgYXJlIDEtYmFzZWQKICAgIGZvciBpOj0xIHRvIEQgZG8KICAgICAgICByZWFkKE1baV0pOwogICAgcmVhZGxuKCk7CiAgICBmb3IgaTo9MSB0byBEIGRvCiAgICAgICAgcmVhZChQW2ldKTsKICAgIHJlYWRsbigpOwoKICAgIGN1bXVsYXRpdmVbMV0gOj0gTVsxXTsKICAgIGZvciBpOj0yIHRvIEQgZG8KICAgICAgICBjdW11bGF0aXZlW2ldIDo9IGN1bXVsYXRpdmVbaS0xXSArIE1baV07CgogICAgZm9yIGk6PTEgdG8gRCBkbwogICAgYmVnaW4KICAgICAgICBjdW11bGF0aXZlW2ldIDo9IGN1bXVsYXRpdmVbaV0gKyBDOwogICAgICAgIGN1bXVsYXRpdmVbaV0gOj0gY3VtdWxhdGl2ZVtpXSAtIFBbaV07CiAgICBlbmQ7CiAgICAKICAgIGZvciBpOj0xIHRvIEQgICBkbyB3cml0ZSAoY3VtdWxhdGl2ZVtpXSwnICAnKTsgd3JpdGVsbjsKICAgIAogICAgRFBbMF0gOj0gMDsKICAgIGZvciBpOj0gMSB0byBZIGRvCiAgICAgICAgRFBbaV0gOj0gMjAwMDAwMDAwMDsKCiAgICB1IDo9IDA7CiAgICBmb3IgaTo9IDAgdG8gRCBkbwogICAgYmVnaW4KICAgICAgICBmb3Igajo9MSB0byBEIGRvCiAgICAgICAgYmVnaW4KICAgICAgICAgICAgaWYgKGkraiA8PSBZKSB0aGVuCiAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICBpZiAoRFBbaStqXSA+PSBEUFtpXSArIGN1bXVsYXRpdmVbal0pIHRoZW4KICAgICAgICAgICAgICAgICAgICBEUFtpK2pdIDo9IERQW2ldICsgY3VtdWxhdGl2ZVtqXTsKICAgICAgICAgICAgZW5kOwogICAgICAgIGVuZDsKICAgICAgICAKICAgICAgCiAgICAgICAgaWYgKChpIDw9IFkpIGFuZCAoRFBbaV0gPSBjdW11bGF0aXZlW2ldKSkgdGhlbgogICAgICAgIGJlZ2luCiAgICAgICAgICAgIHVzZWZ1bFt1XSA6PSBpOwogICAgICAgICAgICB1IDo9IHUrMTsKICAgICAgICBlbmQ7CiAgICBlbmQ7CiAgIGZvciBpOj0gMCB0byBEIGRvIHdyaXRlKCBEUFtpXSwgJyAnKTsgd3JpdGVsbjsgIAogICBmb3IgaTo9MCB0byA1IGRvIHdyaXRlKHVzZWZ1bFtpXSwnICcpOyB3cml0ZWxuOwogICAgZm9yIGk6PSBEIHRvIFkgZG8KICAgIGJlZ2luCiAgICAgICAgZm9yIGs6PTAgdG8gdS0xIGRvCiAgICAgICAgYmVnaW4KICAgICAgICAgICAgaiA6PSB1c2VmdWxba107CiAgICAgICAgICAgIGlmIChpK2ogPD0gWSkgdGhlbgogICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgaWYgKERQW2kral0gPj0gRFBbaV0gKyBjdW11bGF0aXZlW2pdKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgRFBbaStqXSA6PSBEUFtpXSArIGN1bXVsYXRpdmVbal07CiAgICAgICAgICAgIGVuZDsKICAgICAgICBlbmQ7CiAgICBlbmQ7CiBmb3IgaTo9MSB0byB5ICAgZG8gd3JpdGUgKGN1bXVsYXRpdmVbaV0sJyAgJyk7IHdyaXRlbG47CiAgICB3cml0ZWxuKERQW1ldKTsgeyBwcmludCByZXN1bHQgfQplbmQu