贪心+优先队列
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int maxn=50;
int h[maxn],n;
int main()
{
int tot=0;
while(cin>>n&&n)
{
tot++;
int i;
priority_queue<int> q1;
priority_queue<int,vector<int>,greater<int>>q2;
int a;
for(i=1;i<=n;i++)
{
cin>>a;
q1.push(a);
q2.push(a);
}
int step=0,x,y;
while(q1.top()!=q2.top())
{
step++;
x=q1.top();q1.pop();
y=q2.top();q2.pop();
x-=1;
y+=1;
q1.push(x);
q2.push(y);
}
printf("Set #%d\nThe minimum number of moves is %d.\n\n",tot,step);
}
return 0;
}