1.Se citesc doua numere naturale n si m (n >= m), apoi se citeste un sir de n numere întregi. Sa se determine o submultime de elemente din sir cu proprietatea ca suma elementelor din multime este maxima. #include using namespace std; float a[100], b[100]; int i, m, n; void gredy(){ for(i=1; i<=n; i++) if(a[i]>=0){ m++; b[m]=a[i]; } } int main(){ cout<<"n"; cin>>n; for(i=1; i<=n; i++){ cin>>a[i]; } gredy(); for(i=1; i<=m; i++) cout< using namespace std; int v[30],n,j=0,m, nr_elment,v_minus[39] ; int ordonare() { int i ,aux; for(i=1;i<=n;i++) { if (v[i]<0) { j++; v_minus[j]=v[i]; } } for(int i=1;iv_minus[i+1]) { aux=v_minus[i]; v_minus[i]=v_minus[i+1]; v_minus[i+1]=aux; } } } int greedy() { int i ; for(i=1;i<=n;i++) if (v[i]>0) cout<>n; for(int i=1;i<=n;i++) cin>>v[i]; ordonare(); greedy(); } 8. Într-un acvariu se gasesc n pesti (n<=100) pesti carnivori, numerotati de la 1 la n. Stiind pentru fiecare peste care sunt pestii pe care-i poate mânca, sa se determine ordinea în care pestii se manânca astfel încât în final sa ramâna în acvariu cât mai putini. #include #include using namespace std; int n,y; int x[120][120],v[120]; void ales( int pe ){ for (int i=1;i<=n;i++) { if ( x[pe][i]) { x[pe][i]=0; for (int j=1;j<=n;j++) { x[j][0]-=x[j][i]; x[j][i]=0; } ales ( i ); cout << pe << "->" << i< v[i] && x[i][0] ) { min=v[i]; mini=i; }} if ( min == 120 ) return; x[mini][0]=0; for (int i=1;i<=n;i++) { x[i][0]-=x[i][mini]; x[i][mini]=0; } ales(mini); peste(); } int main() { cin>>n; for (int i=1;i<=n;i++) { cin>>x[i][0]; for (int j=1;j<=x[i][0];j++) { cin>>y; x[i][y]=1; v[y]++; } } peste(); return 0; } 3.Se citesc n intervale de forma [ai, bi), i = 1..n, unde capetele intervalelor sunt numere naturale. Sa se aleaga un numar maxim de intervale astfel încât oricare doua intervale alese sa nu se intersecteze. De exemplu, pentru n=6 si intervalele [8, 10), [2, 20), [4, 8), [12, 16), [3, 18), [17, 18) se aleg intervalele [4, 8), [8, 10), [12, 16), [17, 18) #include using namespace std; int n,x[3][100],g,i; void sortare(int g[3][100]) { int schimb,i,aux; do { schimb=0; for(i=1;i<=n-1;i++) if(g[1][i]>g[1][i+1]) { aux=g[1][i]; g[1][i]=g[1][i+1]; g[1][i+1]=aux; aux=g[2][i]; g[2][i]=g[2][i+1]; g[2][i+1]=aux; schimb=1; } }while(schimb); } int main() { cin>>n; for(i=1;i<=n;i++) { cin>>x[1][i]; cin>>x[2][i]; } sortare(x); for(i=1;i<=n;i++) { if(x[2][i]<=x[2][i+1]) cout<<"["<