Cod sursa(job #863661)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 23 ianuarie 2013 22:52:14
Problema Grupuri Scor 74
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#define nmax 100100
using namespace std;

int N,K,Sol,A[nmax];

bool Check(int Val) {

    int i,Sum;

    for(i=1,Sum=0;i<=N;i++)
        Sum+=(A[i]<Val?A[i]:Val);

    return (Sum>=Val*K);

}
int BinarySearch(int Max) {

    int i,step;

    for(step=1;step<Max;step<<=1);

    for(i=0;step;step>>=1)
        if(i+step<=Max && Check(i+step))
            i+=step;

    return i;

}
void solve() {

    int i,Sum;

    for(i=1,Sum=0;i<=N;i++)
        Sum+=A[i];

    Sol=BinarySearch(Sum/K);


}
void read() {

    ifstream in("grupuri.in");

    in>>K>>N;
    for(int i=1;i<=N;i++)
        in>>A[i];

    in.close();

}
void write() {

    ofstream out("grupuri.out");
    out<<Sol<<'\n';
    out.close();

}
int main() {

    read();
    solve();
    write();

    return 0;

}