关闭

问题 B: 排队打水问题(water) [2*]

179人阅读 评论(0) 收藏 举报
分类:

题目描述

排队打水问题(water)
【问题】 有n个人排队到m个水龙头去打水,他们装满水桶的时间t1, t2 , ……, tn为整数且各不相同,应如何安排他们的打水顺序才能使他们花费的总时间最少?
【输人样例】4 2 ( n m ) 【输出样例】23(所有人的花费时间总和)
2 6 4 5 (t1 t2 …… tn)

输入

输出

样例输入

样例输出

提示

var n,m,i,s:longint;
    a:array[1..1000]of longint;
procedure qsort(left,right:longint);
 var
  i,j,x,y:longint;
 begin
  i:=left;j:=right;x:=a[(left+right) div 2];
  repeat
   while a[i]<x do inc(i);
   while x<a[j] do dec(j);
   if i<=j then
   begin
    y:=a[i];a[i]:=a[j];a[j]:=y;
    inc(i);dec(j);
   end;
  until i>j;
  if left<j then qsort(left,j);
  if i<right then qsort(i,right);
end;
begin
 s:=0;
 readln(n,m);
  for i:=1 to n do
  read(a[i]);
  qsort(1,n);
  for i:=1 to n do
  a[i+m]:=a[i+m]+a[i];
  for i:=1 to n do
  s:=s+a[i];
 writeln(s);
end.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15113次
    • 积分:108
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档