Informatică, întrebare adresată de sebi252002, 9 ani în urmă

#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 ap53
1
Am atasat fisierul sursa. Bafta!
Anexe:
Alte întrebări interesante