Cerința
Se dă un șir format din n
numere naturale. Se mai dă o valoare x
și se garantează că șirul începe și se termină cu valoarea x
. Transformați șirul astfel:
- Elementele cu valoarea
x
rămân pe pozițiile lor; - Secvențele de elemente diferile de
x
aflate între două poziții cu valoareax
se ordonează crescător (între aceleași două elemente cu valoareax
se vor afla aceleași elemente ca la început dar în ordine crescătoare).
Date de intrare
Fișierul alfa.in
conține pe prima linie un număr natural n
reprezentând dimensiunea șirului și un număr x
cu semnificația de mai sus. Pe linia a doua n
numere naturale, separate prin câte un spațiu, reprezentând elementele șirului.
Date de ieșire
Fișierul alfa.out
conține cele n
elemente ale șirului în ordinea cerută.
Restricții și precizări
2 <= n <= 1000
- Elementele șirului dat sunt naturale nenule formate din maximum
4
cifre - Pentru
40
de puncte șirul conține doar două elemente cu valoareax
(primul și ultimul).
Exemplu
alfa.in
10 3 3 4 1 2 3 7 9 8 3 3
alfa.out
3 1 2 4 3 7 8 9 3 3
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema alfa:
#include <fstream>
using namespace std;
int v[1001];
int n, x, p, i, j, aux, last;
int main () {
ifstream fin ("alfa.in");
ofstream fout("alfa.out");
fin>>n>>x;
for (i=1;i<=n;i++)
fin>>v[i];
last = n;
for (p=n-1;p>=1;p--)
if (v[p] == x) {
int sortat;
do {
sortat = 1;
for (i=p+1;i<=last-2;i++)
if (v[i] > v[i+1]) {
aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
sortat = 0;
}
} while (sortat == 0);
last = p;
}
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #3356 alfa
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3356 alfa de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!