Cod sursa(job #461954)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 9 iunie 2010 13:24:49
Problema Grupuri Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

int n, K;
int i, j, k;
int stop, grup;

struct animale
{
    int poz;
    int val;
};

struct animale v[100001];

int compare (animale a, animale b)
{
    if (a.val != b.val)
        return a.val > b.val;
    else
        return a.poz < b.poz;
}

int main ()
{
    FILE *f = fopen ("grupuri.in","r");
    FILE *g = fopen ("grupuri.out","w");
    fscanf (f,"%d %d", &K, &n);

    for (i=1; i<=n; ++i)
    {
        fscanf (f,"%d", &v[i].val);
        v[i].poz = i;
    }

    sort (v + 1, v + 1 + n, compare);

    /* for (i=1; i<=n; ++i)
            printf ("%d ", v[i].poz);
        printf ("\n");
        for (i=1; i<=n; ++i)
            printf ("%d ", v[i].val);
        printf ("\n_______________\n");*/

    while (!stop)
    {
        for (i=1; i<=K; ++i)
        {
            if (v[i].val <= 0)
            {
                stop = 1;
                break;
            }
            else
                v[i].val --;
        }
        if (stop)
            break;
        grup ++;
        sort (v + 1, v + 1 + n, compare);
    }

    //printf ("grup = %d\n\n", grup);

    fprintf (g,"%d", grup);

    fclose(g);
    fclose(f);
    return 0;
}