program siano; //Runda 1-A KOMPRESJA a 28.09.2015
const polmax=500000;//max liczby zasianych gatunków
pmax=1000000;
type Ti=longint;
var m,pole,i,j,k,d,b,dst,t,ai:Ti;//m:lskoszeń, t:czas miedzy pokosami
sum:qword;//siano z jednego pokosu
Tab:array[1..polmax] of record a,h,w:Ti end;
//a:dobowe przyrosty, h:aktualne wysokości, w:wagi(krotności ai)
P:array[1..pmax] of Ti;//pomocnicza do kompresji
begin
readln(pole,m);
for i:=1 to pmax do P[i]:=0;//init
for i:=1 to pole do begin read(ai); P[ai]+=1 end;
i:=0;
for k:=1 to pmax do if P[k]>0 then
begin i+=1; Tab[i].a:=k; Tab[i].w:=P[k] end;
pole:=i;
for i:=1 to pole do Tab[i].h:=0;//init
dst:=0; //init nr-u dnia koszenia
for j:=1 to m do
begin //j-te koszenie
readln(d,b);//d:nr dnia, b:wysokość koszenia
t:=d-dst; dst:=d;
sum:=0;//czas od ostatniego koszenia
for i:=1 to pole do with Tab[i] do
begin
h+=a*t;//aktualizacja h
if h>b then
begin
sum+=((h-b)*w); h:=b
end;
end;
writeln(sum)
end
end.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | program siano; //Runda 1-A KOMPRESJA a 28.09.2015 const polmax=500000;//max liczby zasianych gatunków pmax=1000000; type Ti=longint; var m,pole,i,j,k,d,b,dst,t,ai:Ti;//m:lskoszeń, t:czas miedzy pokosami sum:qword;//siano z jednego pokosu Tab:array[1..polmax] of record a,h,w:Ti end; //a:dobowe przyrosty, h:aktualne wysokości, w:wagi(krotności ai) P:array[1..pmax] of Ti;//pomocnicza do kompresji begin readln(pole,m); for i:=1 to pmax do P[i]:=0;//init for i:=1 to pole do begin read(ai); P[ai]+=1 end; i:=0; for k:=1 to pmax do if P[k]>0 then begin i+=1; Tab[i].a:=k; Tab[i].w:=P[k] end; pole:=i; for i:=1 to pole do Tab[i].h:=0;//init dst:=0; //init nr-u dnia koszenia for j:=1 to m do begin //j-te koszenie readln(d,b);//d:nr dnia, b:wysokość koszenia t:=d-dst; dst:=d; sum:=0;//czas od ostatniego koszenia for i:=1 to pole do with Tab[i] do begin h+=a*t;//aktualizacja h if h>b then begin sum+=((h-b)*w); h:=b end; end; writeln(sum) end end. |
English