Cod sursa(job #472925)

Utilizator andra23Laura Draghici andra23 Data 27 iulie 2010 00:27:47
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<iostream>
#include<fstream>

using namespace std;

int a[100010];

int grup(int n, int k, long long ng){
    long long s = 0;
    int i;
    for (i = n; i >= 1; i--){
        if ( a[i] > ng)
            s = s + ng;
        else 
            s = s + a[i];
    }  
    if ( s >= ng * k)
        return 1;
    return 0;    
}

int main(){
    ifstream f("grupuri.in");
    ofstream g("grupuri.out");
    int n, k;
    int i, j;
    long long s = 0, p, u, m, sol;
    f>>k>>n;
    for (i = 1; i <= n; i++){
        f>>a[i];
        s = s+a[i];
    }
    s = s/k;
    
    p = a[1];
    u = s;
    sol = p;
    
    while (p <= u){
        m = (p+u)/2;
        if (grup(n, k, m) == 1){
            sol = m;
            p = m+1;    
        }
        else   
            u = m-1;
    }
    
    g<<sol<<'\n';
       
    return 0;
}