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. |