Se da un sir V cu N elemente, numere naturale nenule. La primul pas, secventa de elemente cuprinse ıntre prima sii ultima valoare cu suma cifrelor maxima (inclusiv acestea) se elimina. Ne imaginam ca toate elementele din dreapta secventei eliminate sunt deplasate la stanga, ajungand in continuarea celor din stanga secvenței eliminate. Reluam pe noul sir operatia descrisa anterior. Procedeul se repeta pana se ajunge la un sir fara elemente.
Determinati numarul de pași necesari pentru a ajunge la șirul vid. Determinati si numarul cel mai marede elemente care s-au eliminat la același pas.
Exemplu:
INTRARE
6
111 19 27 4 55 1
IESIRE
3 4
EXPLICATIE:
La primul pas se elimia secventa 19 27 4 55 iar sirul ramas este 111 1. La al doilea pas se elimina
111(este un singur element cu suma cifrelor maxima), sirul ramas fiind format doar din 1. La al treilea pas se elimina acest element si ajungem la sirul vid. Cele mai multe elemente s-au eliminat la primul pas,respectiv 4 elemente.
!!!Va rog rezolvare pt cls a 6-a!!!
Răspunsuri la întrebare
Răspuns:
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
void solve() {
int n;
cin >> n;
int a[n];
for(int i = 0; i < n; i++) {
cin >> a[i];
}
int cnt = 0;
int temp = -1;
while (true) {
cnt++;
int maxi = INT_MIN;
for(int i = 0; i < n; i++) {
int n = a[i], sum = 0;
while (n >= 10) {
sum+=n%10;
n/=10;
}
sum+=n;
if (sum > maxi) {
maxi = sum;
}
}
int na = -1, ma = -1;
bool f = false;
for(int i = 0; i < n; i++) {
int n = a[i], sum = 0;
while (n >= 10) {
sum+=n%10;
n/=10;
}
sum+=n;
if (sum == maxi && !f) {
f = true;
na = i;
}
}
f = false;
for(int i = n-1; i >= 0; i--) {
int n = a[i], sum = 0;
while (n >= 10) {
sum+=n%10;
n/=10;
}
sum+=n;
if (sum == maxi && !f) {
f = true;
ma = i;
}
}
int cnt1 = 0;
for (int i = na; i <= ma; i++) {
a[i] = -1;
cnt1++;
}
if (temp != -1) {
if (cnt1 > temp) {
temp = cnt1;
}
} else {
temp = cnt1;
}
bool d = false;
for (int i = 0; i < n; i++) {
if (a[i] != -1) {
d = false;
break;
} else {
d = true;
}
}
if(d) {
break;
}
}
cout << cnt << " " << temp;
}
int main() {
solve();
}