#include
#include
#include
#include
using namespace std;
int n,p,v[1002],i,maxim=-1,maxi=-1,q,r,t,maxi2=-1,y,u;
long long s=0;
int main()
{
ifstream f("expresie.in");
ofstream g("expresie.out");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i
{
if(v[i]*v[i+1]>maxim)
{
maxi=maxim;
maxim=v[i]*v[i+1];
r=q;
t=p;
q=i;
p=i+1 ;
}
else
{
if(v[i]*v[i+1]>maxi)
{
maxi2=maxi;
maxi=v[i]*v[i+1];
r=i;
t=i+1;
}
}
}
s=s+maxim+maxi;
v[q]=0;
v[p]=0;
v[r]=0;
v[t]=0;
for(i=1;i<=n;i++)
{
s=s+v[i];
}
g<
}
DC DOAR 30?
stel are de rezolvat o temă grea la matematică: având la dispoziţie N numere naturale nenule trebuie să aşeze între acestea 2 operaţii de înmulţire şi N-3 operaţii de adunare, astfel încât rezultatul calculelor să fie cel mai mare posibil. Nu este permisă modificarea ordinii numerelor date.
De exemplu, dacă N=5 şi numerele sunt 4, 7, 1, 5, 3, operaţiile pot fi aşezate 4 + 7 * 1 + 5 * 3, 4 * 7 *1 + 5 + 3 etc.
Cerinţă
Scrieţi un program care să aşeze două operaţii de înmulţire şi N-3 operaţii de adunare între cele N valori date astfel încât valoarea expresiei obţinute să fie maximă.
Date de intrare
Fişierul de intrare expresie.in contine pe prima linie se află un număr natural N, reprezentând numărul elementelor date. Pe următoarele linii se află cele N numere naturale date, fiecare pe câte o linie.
Date de ieşire
Fişierul de ieşire expresie.out va conţine, pe prima linie, valoarea maximă obţinută prin evaluarea expresiei.
Restricţii
4 <= N <= 1000
Numerele date sunt numere naturale între 1 şi 10000
Exemplu
expresie.in expresie.out Explicaţii
5
4
7
1
5
3
44 Valoarea maximă se obţine prin aşezarea operaţiilor sub forma:
4 * 7 + 1 + 5*3
Răspunsuri la întrebare
Răspuns de
1
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă