Informatică, întrebare adresată de jack991, 8 ani în urmă

#1878
Cerința
Se consideră un șir ai cărui termeni sunt numere naturale nenule, de o singură cifră. Numim număr asociat al acestui șir un număr natural format cu termenii șirului, în ordinea în care aceștia apar în șir.
Se cere determinarea unui șir obținut prin eliminarea a doi termeni situați pe poziții consecutive în șirului dat, astfel încât numărul asociat șirului obținut să fie maxim.

Date de intrare

Fișierul de intrare nrasoc.in conține pe prima linie o succesiune de cifre, separate prin câte un spațiu, reprezentând termenii șirului dat.

Date de ieșire

Fișierul de ieșire nrasoc.out va conține pe prima linie un șir de cifre, separate prin câte un spațiu, reprezentând șirul corespunzător numărului asociat maxim.

Restricții și precizări

fișierul de intrare conține cel mult 80 de cifre.

Exemplu

nrasoc.in

9 8 5 7 6 2 3 4

nrasoc.out

9 8 6 2 3 4

Explicație

Numerele asociate șirurilor care se pot obține sunt 576234, 976234, 986234, 2985234, 985734, 985764, 985762. Fișierul de ieșire va conține:
9 8 6 2 3 4

Răspunsuri la întrebare

Răspuns de alle13m
9

Răspuns:

#include <iostream>

#include <fstream>

#include <cstring>

using namespace std;

ifstream f("nrasoc.in");

ofstream g("nrasoc.out");

int main()

{

int x, y, z, gata = 0;

f >> x >> y;

while (!gata && f >> z)

{

 if (x >= z)

 {

  g << x << " ";

  x = y; y = z;

 }

 else gata = 1;

}

if (gata)

{

 g << z << " ";

 while (f >> z) g << z << " ";

}

return 0;

}

Explicație:

Alte întrebări interesante