//pentru 2 multimi de nr intregi nenule C cu n elemente (c1,c2,....cn) si a (a1,a2.....am) n<m sa se slecteze o multime de n elemente din a astfel incat expresia e= val maxima)
#include<iostream.h> int c[20],a[20],i,j,n,m,k,p,r,e; void citire(int n,int c[20]) { for(i=1;i<=n;i++) {cout<<"["<<i<<"]="; cin>>c[i]; } } void afisare(int n,int c[20]) { for(i=1;i<=n;i++) cout<<c[i]<<" "; } void ordonare(int n,int c[20]) {int aux; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(c[j]<c[i]) { aux=c[j]; c[j]=c[i]; c[i]=aux; } } void main() { cout<<"n="; cin>>n; citire(n,c); cout<<"m="; cin>>m; citire(m,a); ordonare(n,c); ordonare(m,a); afisare(n,c); cout<<endl; afisare(m,a); cout<<endl; i=n; j=m; k=0; while(c[i]>0 && a[j]>0 && k<n) { k++; cout<<"("<<c[i]<<")*("<<a[j]<<")+"; e+=c[i]*a[j]; i--; j--; } p=i; r=j; i=1; j=1; while(c[i]<0 && a[j]<0 && k<n) { k++; cout<<"("<<c[i]<<")*("<<a[j]<<")+"; e+=c[i]*a[j]; i++; j++; } if(c[i]<0) { while(k<n) { k++; cout<<"("<<c[i]<<")*("<<a[j]<<")+"; e+=c[i]*a[j]; i++; j++; } } else { i=p; j=r; while(k<n) { k++; cout<<"("<<c[i]<<")*("<<a[j]<<")+"; e+=c[i]*a[j]; i--; k--; } } cout<<"="<<e;
}
|