Cod sursă (job #544889)

Utilizator avatar madalina023 Madalina Demian madalina023 IP ascuns
Problemă Lanterna Compilator cpp | 0,76 kb
Rundă lasm_19_03_2020_11 Status evaluat
Dată 19 mar. 2020 12:02:26 Scor 100
#include <fstream>
#define min(a, b) (a<b)?a:b
using namespace std;
int i, n, v[100001];
long long int t;
void quick_sort(int left, int right)
{
	int i, j, pivot, tmp;
	i=left;
	j=right;
	pivot=v[left+(right-left)/2];
	while (i<=j)
	{
		while (v[i]<pivot)
			i++;
		while (v[j]>pivot)
			j--;
		if (i<=j)
		{
			tmp=v[i];
			v[i]=v[j];
			v[j]=tmp;
			i++;
			j--;
		}
	}
	if (left<j)
		quick_sort(left, j);
	if (right>i)
		quick_sort(i, right);
}
int main()
{
	ifstream fin("lanterna.in");
	ofstream fout("lanterna.out");
	fin>>n;
	for (i=1;i<=n;i++)
		fin>>v[i];
	quick_sort(1, n);
	while (n>3)
	{
		t+=min(2*v[2]+v[n]+v[1], 2*v[1]+v[n-1]+v[n]);
		n-=2;
	}
	if (n==3)
		t+=v[1]+v[2]+v[3];
	else t+=v[2];
	fout<<t;
	return 0;
}