fbpx

Problema #1488 – Strazi – Rezolvari PBInfo

de Mihai-Alexandru

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.

#include <bits/stdc++.h>

using namespace std;
ifstream cin("strazi.in");
ofstream cout("strazi.out");
int n , m , t , rez;
double a[1001] , x , x1 , x2;

int main()
{
    cin >> n;
    for(int i = 1 ; i <= n ; i++)
    {
        cin >> m;
        for(int j = 1 ; j <= m ; j++)
            cin >> a[j];
        t = 1;
        x = a[1];
        for(int j = 1 ; j <= m ; j++)
            if(a[j] > x)
            {
                t++;
                x = a[j];
            }
        x1=(double)t/m;
        if(x1 > x2) x2 = x1 , rez = i;
        cout << fixed << setprecision(3) << x1 << "\n";
    }
    cout << rez;
    return 0;
}
Comentarii

S-ar putea sa iti placa