Cod sursa(job #1458328)

Utilizator preda.andreiPreda Andrei preda.andrei Data 7 iulie 2015 12:57:13
Problema Grupuri Scor 68
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <stdio.h>

using namespace std;

int v[100001];

bool valid(int mij, int n, int k)
{
    int sum=0;

    for(int i=1; i<=n; i++){
        if(v[i]<=mij)
            sum=sum+v[i];
        else sum=sum+mij;
    }

    if(sum>=mij*k)
        return true;
    return false;
}

int main()
{
    FILE *fin=fopen("grupuri.in", "r");
    FILE *fout=fopen("grupuri.out", "w");

    long long int k, n, st, dr, mij, gr=0;
    fscanf(fin, "%lld%lld", &k, &n);
    dr=0;
    for(int i=1; i<=n; i++){
        fscanf(fin, "%d", &v[i]);
        dr+=v[i];
    }
    st=0;
    while(st<=dr){
        mij=(st+dr)/2;
        if(valid(mij, n, k)){
            if(mij>gr)
                gr=mij;
            st=mij+1;
        }
        else{
            dr=mij-1;
        }
    }
    fprintf(fout, "%lld", gr);
    return 0;
}