Cod sursa(job #926966)

Utilizator crisbodnarCristian Bodnar crisbodnar Data 25 martie 2013 14:57:56
Problema Medie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cassert>

using namespace std;

ifstream fin("lumanari.in");
ofstream fout("lumanari.out");

int n, timpref;
long long sum, numar;

void Citire(){
    long long x;

    fin>>n;
    for(int i=1; i<=n;i++){
        fin>>x;
        sum += x;
        timpref++;
    }
}

int zile(long long timp){
     numar = (long long)(timp*(timp+1)/2);
     if(numar < sum) return 1;
     if(numar == sum) return 3;
     return 0;
}

void Nrzile(){
    long long st = -1, dr = timpref+1, m;
    while(dr - st > 1){
        m = dr + (st-dr)/2;
        if(zile(m) == 3) {fout<<m; return ;}
        else if(zile(m)) st = m;
        else dr = m;
    }
    fout<<m;
}

int main()
{
    Citire();
    Nrzile();
    return 0;
}