Rezolvare completă PbInfo #1488 Strazi

Gigel primeşte o nouă provocare de la prietenul său Programatorul! Cunoscând înălţimile clădirilor aflate pe o anumită stradă, Gigel trebuie să răspundă rapid la întrebarea: “Care este gradul de vizibilitate al străzii?”

Gradul de vizibilitate al unei străzi este dat de raportul dintre numărul clădirilor vizibile din capătul stâng al străzii şi numărul total al clădirilor de pe stradă, raport calculat cu trei zecimale.

Cerința

Pentru o intersecţie de N străzi ajutaţi-l pe Gigel să determine gradul de vizibilitate al fiecărei străzi şi să precizeze care este strada cu grad maxim de vizibilitate.

Date de intrare

Fișierul de intrare strazi.in conține pe prima linie numărul de străzi N, apoi N linii corespunzătoare datelor celor N străzi. Pe linia K+1 (K>=1) din fişier sunt precizate: numărul de clădiri, apoi înălţimile acestor clădiri în ordinea parcurgerii străzii cu numărul K, de la stânga la dreapta.

Date de ieșire

Fișierul de ieșire strazi.out va conține pe primele N linii gradul de vizibilitate al străzilor, în ordinea crescătoare a indicilor de strada (linia X va conţine gradul de vizibilitate al străzii X, 1<=X<=N). Ultima linie din fişier va conţine indicele străzii cu grad maxim de vizibilitate. Dacă sunt mai multe străzi cu grad maxim de vizibilitate atunci va fi afişată strada cu indicele de ordine cel mai mic.

Restricții și precizări

  • 1<=N<100
  • Numărul de clădiri de pe o stradă este mai mic decât 1000.
  • Înălţimea unei clădiri nu depăşeşte 105 m.

Exemplu

strazi.in

4
5 5.1 7.2 2.0 6.9 8.3 
3 6.5 4.2 3.1
2 3.4 5.0
4 1.2 2.3 3.4 4.5

strazi.out

0.600
0.333
1.000
1.000
3

Explicație

Clădirile vizibile din partea stângă a primei străzi sunt cele cu înălţimile 5.1, 7.2 şi 8.3. Gradul de vizibilitate este 3/5=0.600
Pentru strada 2 este vizibilă o singură clădire, prima. Gradul de vizibilitate este 1/3=0.333
Pentru strada 3 sunt vizibile cele 2 clădiri. Gradul de vizibilitate este 2/2=1.000
Pentru strada 4 sunt vizibile toate clădirile. Gradul de vizibilitate este 4/4=1.000 Străzile 3 şi 4 are gradul de vizibilitate maxim dar va fi afişată strada cu indicele cel mai mic.

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 Strazi:

#include <fstream>
#include <iomanip>

using namespace std;

ifstream f("strazi.in");
ofstream g("strazi.out");

int n,m;
float a[1001];

int main()
{
    int i,j,t,st;
    float x,x1,x2=0;
    f>>n;
    for (j=1;j<=n;j++)
       {
        f>>m;
        for (i=1;i<=m;i++) f>>a[i];
        t=1;
        x=a[1];
        for (i=1;i<=m;i++)
            if (a[i]>x) { t++; x=a[i];};
        x1=(float)t/m;
        if (x1>x2){ x2=x1; st=j;}
        g<<fixed<<setprecision (3)<<x1<<"\n";
       }
      g<<st;
      f.close();
      g.close();
    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 Adresa de email.

Rezolvarea problemei #1488 Strazi

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1488 Strazi 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!