Problem:
ミルクショップ
鈴木さんは会津地域に新しく搾りたてミルクの移動販売のお店を開きました。その日買い求めに来るお客さんは全員持ち帰るためのボトルを持って既にお店に並んでいて、それ以上増えないものとします。お客さんはそれぞれ1回だけしか注文しません。タンクの蛇口が一つしかないので、一人ずつ順番に販売しなければなりません。そこで、鈴木さんはなるべく並んでいるお客さんの待ち時間を少なくしたいと考えています。
お客さんの人数とお客さんが牛乳を注ぎきるのに要する時間が入力として与えられます。あなたはお客さんの「一人一人の待ち時間の合計」(以下「待ち時間の合計」とする)を最小にするための注文の順序を鈴木さんに代わって調べ、そのときの「待ち時間の合計」を出力して終了するプログラムを作成してください。ただし、お客さんは 10,000 人以下で 1 人あたりに要する時間は 60 分以下とします。
例えば、お客さんの人数が 5 人で、各お客さんが要する時間が順に 2,6,4,3,9 分の場合、そのままの順序だと「待ち時間の合計」は 37 分になります。次の例では、最初の列の順の 2 人目と 3 人目を入れ替えています。この場合、「待ち時間の合計」は 35 分になります。最適な順序だと 31 分で済みます。
待ち時間
1 人目 2 分
0 分
2 人目 6 分
2 分
3 人目 4 分
8 分
4 人目 3 分
12 分
5 人目 9 分
15 分
37 分
← 「待ち時間の合計」
2 人目と 3 人目を入れ替えた例
待ち時間
1 人目 2 分
0 分
2 人目 4 分
2 分
3 人目 6 分
6 分
4 人目 3 分
12 分
5 人目 9 分
15 分
35 分
← 「待ち時間の合計」
Input
複数のデータセットが与えられます。各データセットは以下の形式で与えられます。
n
t
1
t
2
:
t
n
1 行目にお客さんの人数
n
(
n
≤ 10,000) が与えられます。続く
n
行に
i
人目のお客さんが要する時間を表す整数
t
i
(0 ≤
t
i
≤ 60) がそれぞれ１行に与えられます。
入力は１つの 0 を含む行で終わります。データセットの数は 50 を超えません。
Output
各データセットごとに、待ち時間の合計(整数)を１行に出力してください。
Sample Input
5
2
6
4
3
9
0
Output for the Sample Input
31

Submitted solutions:

code_snippet: #include<iostream>
using namespace std;

void bubbleSort( int* a, int n )
{
    for( int i = 0; i < n; i++ )
        for( int j = 0; j < n - 1; j++ )
        {
            if( a[j] > a[j+1] )
            {
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
}

int waitingMinute( int* a, int* b, int x )
{
    if( x == 0 )
        return b[0] = a[0];
    
    if( b[x] != 0 )
        return b[x];
    else
        return b[x] = a[x] + waitingMinute( a, b, x - 1 );
}

int main()
{
    int n, a[10000], sum[10000] = {0};

    while( cin >> n )
    {
        if( n == 0 )
            break;

        for( int i = 0; i < n; i++ )
        {
            cin >> a[i];
            sum[i] = 0;
        }

        bubbleSort( a, n );
        waitingMinute( a, sum, n - 1 );

        unsigned int s = 0;
        for( int i = 0; i < n - 1; i++ )
            s += sum[i];

        cout << s << endl;
    }

    return 0;
}
accuracy: 1
time_ms: 230
memory_kb: 3388
final_rank: 9

code_snippet: #include <iostream>
#include <algorithm>
using namespace std;

int main(){
	int n;
	while(cin >> n){
		if (n == 0) { break; }
		int a[20000] = {};
		long long int ans = 0;
		for (int i = 0; i < n;i++) {
			cin >> a[i];
		}
		sort(a, a+n);
		for(int i = 0;i<n;i++){
			for(int j=0;j<i;j++){
				ans += a[j];
			}
		}
		cout << ans << endl;
	}
	return 0;
}
accuracy: 1
time_ms: 40
memory_kb: 3140
final_rank: 6

code_snippet: #include <iostream>

using namespace std;
int n,m,temp;
int t[10005];
long long int sum;
int main(){
	while(1){
		cin >> n;
		if(n==0)break;
		m=n;
		while(m--){
			cin >> t[m];
		}
		for(int i=0;i<n-1;i++){
			for(int j=0;j<n-1-i;j++){
				if(t[j]>t[j+1]){
					temp=t[j];
					t[j]=t[j+1];
					t[j+1]=temp;
				}
			}
		}
		sum=0;
		for(int i=0;i<n-1;i++){
			sum+=(i+1)*t[n-2-i];
		}
		cout << sum << endl;
	}
	return 0;
}
accuracy: 1
time_ms: 190
memory_kb: 3080
final_rank: 8

code_snippet: #include<iostream>
#include<algorithm>
using namespace std;
int main() {
	long long a[10000], x, y, n, c;
	c = 0;
	while (1) {
		cin >> n;
		if (n == 0) { break; }
		for (int k = 0; k < n; k++) {
			cin >> a[k];
		}
		//sort(a,a+n);
		for (int j = 0; j < n; j++) {
			for (int i = 0; i < n -1; i++) {
				if (a[i] > a[i + 1]) {
					x = a[i];
					y = a[i + 1];
					a[i] = y;
					a[i + 1] = x;
				}
			}
		}
		for (int k = 0; k < n; k++) {
			c = c + a[k] * (n - (k + 1));
		}
		//cout << a[0] << a[1] << a[2] << a[3] << a[4] << endl;
		cout << c << endl;
		c = 0;
	}
	return 0;
}
accuracy: 1
time_ms: 260
memory_kb: 3144
final_rank: 10

code_snippet: #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <numeric>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>

using namespace std;

#define FOR(i,a,b) for(long long i=(a);i<(b);i++)
#define REP(i,N) for(long long i=0;i<(N);i++)
#define ALL(s) (s).begin(),(s).end()
#define fi first
#define se second

#define PI acos(-1.0)
#define INF 1000000007

typedef long long ll;
typedef pair<ll, ll> P;
typedef pair<double, double> PD;
typedef pair<string, ll> PS;
typedef vector<ll> V;

ll n, a;
V vi;

int main(){
	while (cin >> n&&n){
		REP(i, n){
			cin >> a;
			vi.push_back(a);
		}
		sort(ALL(vi));
		ll sum = 0;
		REP(i, n){
			REP(j, i){
				sum += vi[j];
			}
		}
		cout << sum << endl;
		vi.clear();
	}
}
accuracy: 1
time_ms: 40
memory_kb: 3236
final_rank: 7

code_snippet: #include <iostream>
#include <cstdio>
#include <vector>
#include <list>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <numeric>
#include <sstream>
#include <queue>
#include <iomanip>
using namespace std;

#define REP(i,n) for(int (i)=0; (i)<(n); (i)++)
#define FOR(i,a,b) for(int (i)=(a); (i)<(b); (i)++)
#define PUSH(n,v) for(int i=0; i<(n); i++) {int j; cin >> j; v.push_back(j);}
#define ALL(v) v.begin(), v.end()
#define print(s) cout << (s) << endl

void solve112(int n) {
    vector<int> v;
    PUSH(n,v);
    sort(ALL(v));
    long s = 0;
    REP(i,n) {
        s += (n-i-1) * v[i];
    }
    cout << s << endl;
}

int main() {
    int n;
    while (cin >> n, n) {
        solve112(n);
    }
    return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1324
final_rank: 4

code_snippet: #include <iostream>
#include <queue>
#include <vector>
using namespace std;

int main()
{
	long long int n,sum,S,temp;
	priority_queue<int, vector<int>,greater<int> > que;
	while(cin >> n, n){
		S = 0;
		sum = 0;
		for(int i = 0;i < n;i++){
			cin >> temp;
			que.push(temp);
		}
		while(!que.empty()){
			sum += S;
			S +=  que.top();
			que.pop();
		}
		cout << sum << endl;
	}
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1320
final_rank: 3

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main()
{
    int n=0;
    while(cin>>n,n){
        int people[10000];
        for(int i=0;i<n;i++)cin>>people[i];
        sort(people,people+n);
        long long int ans=0,now=0;
        for(int i=0;i<n;i++){
            ans+=now;
            now+=people[i];
        }
        cout<<ans<<endl;
    }
}
accuracy: 1
time_ms: 10
memory_kb: 1208
final_rank: 1

code_snippet: #include<iostream>
#include<string>
using namespace std;
long long n,s[10001],count;
int main(){
	while(true){
	cin>>n;
	if(n==0)
		break;
	count=0;
	for(int i=0;i<n;i++)
		cin>>s[i];
	for(int i=0;i<n-1;i++){
		for(int j=n-1;j>i;j--){
			if(s[j]<s[j-1]){
				int tmp=s[j];
				s[j]=s[j-1];
				s[j-1]=tmp;
			}
		}
	}
	for(int i=0;i<n;i++)
		count+=s[i]*(n-1-i);
	cout<<count<<endl;
	}
    return 0;
}
accuracy: 1
time_ms: 250
memory_kb: 1232
final_rank: 5

code_snippet: #include <bits/stdc++.h>

using namespace std;

int main(){

    int n;
    long long total;

    while(cin >> n, n){

        int time[n], sum[n];

        for(int i = 0; i < n; ++i){
            cin >> time[i];
        }

        sort(time, time + n);

        sum[0] = 0;
        for(int i = 1; i < n; ++i){
            sum[i] = sum[i - 1] + time[i - 1];
        }

        total = 0;
        for(int i = 0; i < n; ++i){
            total += sum[i];
        }

        cout << total << endl;

    }

}
accuracy: 1
time_ms: 10
memory_kb: 1252
final_rank: 2