Cod sursa(job #2515374)

Utilizator alex2209alexPavel Alexandru alex2209alex Data 28 decembrie 2019 14:28:41
Problema Avioane Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
long long x;
int n,v[100001],d[100001];
long long rezolvare(int in,int sf)
{
	if(in > sf)
		return -1;
	int mij = (in + sf) / 2;
	long long rasp = 0;
	for(int i = d[in - 1]; i <= min(mij,d[sf + 1]); ++i)
	{
		long long cur = v[mij] * (n - mij) + v[i] * (mij - i);
		if(cur > rasp)
		{
			rasp = cur;
			d[mij] = i;
		}
	}
	return max(rasp,max(rezolvare(in,mij - 1),rezolvare(mij + 1,sf)));
}
int main()
{
	f >> n;
	for(int i = 0; i < n; ++i)
		f >> v[i];
	sort(v,v + n);
	d[n] = n;
	g << rezolvare(0,n - 1);
	return 0;
}