Cod sursa(job #997470)

Utilizator andreimaresuMaresu Andrei andreimaresu Data 14 septembrie 2013 10:48:59
Problema Grupuri Scor 8
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<iostream>
#include<stdio.h>
#include<stdlib.h>

using namespace std;

int compare (const void * a, const void * b)
{
  return ( *(long int*)a - *(long int*)b );
}

int main()
{
    freopen("grupuri.in","r",stdin);
    freopen("grupuri.out","w",stdout);
    long int k,n,i,nr=0,j,aux;
    bool ok;
    cin >> k >> n;
    long int a[n];
    for(i=0;i<n;i++)
    {
        cin >> a[i];
    }
    ok=true;
    while(ok)
    {
        qsort(a,n,sizeof(long int),compare);
        i=0;
        while(a[i]==0)
        {
            i++;
            if(i==n)
            {
                ok=false;
            }
        }

        if(ok)
        {
            a[i]--;
            aux=k-1;

            for(j=n-1;j>=0;j--)
            {
                if(a[j]>0)
                {
                    a[j]--;
                    aux--;
                }
                if(aux==0)
                {
                    nr++;
                    break;
                }
                if(j<i)
                {
                    ok=false;
                }
            }
            if(aux>0)
            {
                ok=false;
            }
        }
    }
    cout << nr;
    return 0;
}