fbpx

Problema #262 – Intervale1 – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dă un șir de n numere reale, în ordine strict crescătoare. Să se determine un număr natural x, cu proprietatea că în orice interval deschis având drept capete oricare două valori din șir se află cel puțin x numere întregi.

Date de intrare

Fişierul de intrare intervale1.in conţine pe prima linie numărul n; urmează n numere reale, în ordine strict crescătoare, separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe linii.

Date de ieşire

Fişierul de ieşire intervale1.out va conţine pe prima linie numărul x.

Restricţii şi precizări

  • 1 ≤ n ≤ 100.000
  • numerele reale din fișierul de intrare au valoarea absolută mai mică decât 100.000.000

Exemplu

intervale1.in

6
3.5 5.1 9.2 16 20.33 100

intervale1.out

2
#include <bits/stdc++.h>
using namespace std;
ifstream cin("intervale1.in");
ofstream cout("intervale1.out");
double a[1000001];
int n , mini;
int main()
{
    cin >> n;
    for(int i = 0 ; i < n ; ++i) cin >> a[i];
    mini = 1000001;
    for(int i = 0 ; i < n-1 ; ++i)
    {
        if(a[i + 1] - a[i] < mini && (int)a[i] == (double)a[i] && (int)a[i + 1] == (double)a[i + 1])
            mini = a[i + 1] - a[i] - 1;
        else if((int)a[i+1]-(int)a[i] < mini)
                mini = (int)a[i + 1] - (int)a[i];
    }
    cout << mini;
    return 0;
}
Comentarii

S-ar putea sa iti placa