Cod sursa(job #1146059)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 18 martie 2014 17:51:12
Problema Grupuri Scor 12
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
int K,N,S;
int Array[100005];
void Read()
{
    int i;
    f>>K>>N;
    for(i=1;i<=N;i++)
        f>>Array[i],S+=Array[i];
}
bool Result(int groups)
{
    int i=N;
    while(i>0 && Array[i]>=groups)
        --i;
    if(groups<=(N-i-1))
        return 1;
    int counter=groups-i,sum=0;
    for(;i>=1;i--)
        sum+=Array[i];
    if(sum>=counter*K)
        return 1;
    return 0;
}
void Binary_Search()
{
    int st=1,dr=S/K;
    int sol=0;
    while(st<=dr)
    {
        int mid=(st+dr)/2;
        if(Result(mid)==1)
        {
            sol=mid;
            st=mid+1;
        }
        else
            dr=mid-1;
    }
    g<<sol<<"\n";
}
int main()
{
    Read();
    Binary_Search();
    return 0;
}