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

题目描述

排队打水问题(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.

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jing1223639316/article/details/46826717
个人分类: 编程
上一篇问题 G: 均分纸牌
下一篇问题 H: Frog青蛙的约会【浙江省选2002】
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭