Cod sursa(job #289532)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 26 martie 2009 19:48:24
Problema Grupuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>

#define FIN "grupuri.in"
#define FOUT "grupuri.out"

#define N 100010

int n, k, a[N], s[N], c;

void read()
{
    int i;
    freopen(FIN, "r", stdin);

    scanf("%d%d", &k, &n);

    for (i = 1; i <= n; ++i)
    {
        scanf("%d", &a[i]);
        s[i] = s[i - 1] + a[i];
    }
}

int calc(int m)
{
    int x;
    x = s[m - 1] / m + n - m + 1;
    if (x < k)
        return 1;
    if (x == k)
        return 0;
    return -1;
}

void solve()
{
    int p = 1, u = s[n] / k, m, x;

    while (p < u)
    {
        m = (p + u) >> 1;

        x = calc(m);

        if (x < 1)
        {
            p = m + 1;
            if (x == 0)
                c = m;
        }
        else
        {
            u = m;
        }
    }
    if (!calc(p) && p > c)
        c = p;
}

void write()
{
    freopen(FOUT, "w", stdout);

    printf("%d\n", c);
}

int main()
{
    read();

    solve();

    write();
}