⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trip2.pas

📁 PASCAL光盘资料PASCAL光盘资料PASCAL光盘资料
💻 PAS
字号:
program trip2(input,output);
const max=1000;
type recordtype=record price,content:real end;
var i,j,n,point,tail:longint;
    content,change,distance2,money,use:real;
    price,distance,consume:array[0..max] of real;
oil:array [0..max] of recordtype;

begin
  assign(input,'trip.in');
  assign(output,'trip.out');
  reset(input);
  rewrite(output);
  readln(distance[0],content,distance2,price[0],n);
  distance[n+1]:=distance[0];
  for i:=1 to n do  readln(distance[i],price[i]);
  distance[0]:=0;
for i:=n downto 0 do consume[i]:=(distance[i+1]-distance[i])/distance2;
{计算相邻两站间的油耗}
  for i:=0 to n do
    if consume[i]>content then
      begin writeln('No Solution'); halt end;
  money:=0; tail:=1; change:=0;
  oil[tail].price:=price[0]*2;
oil[tail].content:=content;
  for i:=0 to n do
     begin
       point:=tail;
       while (point>=1) and (oil[point].price>=price[i]) do
          begin
             change:=change+oil[point].content;
             point:=point-1
          end;
       tail:=point+1;
       oil[tail].price:=price[i];
       oil[tail].content:=change;
       use:=consume[i]; point:=1;
       while (use>1e-6) and (point<=tail) do
         if use>=oil[point].content
           then begin
                      use:=use-oil[point].content;
                      money:=money+oil[point].content*oil[point].price;
point:=point+1
end
           else begin
oil[point].content:=oil[point].content-use;
                      money:=money+use*oil[point].price;
use:=0
end;
       for j:=point to tail do oil[j-point+1]:=oil[j];
       tail:=tail-point+1;
       change:=consume[i]
     end;
  writeln(money:0:2);
  close(input);
  close(output)
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -