Pagini recente » Cod sursa (job #330206) | Cod sursa (job #1759266) | Cod sursa (job #2956496) | Cod sursa (job #507106) | Cod sursa (job #1023479)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <algorithm>
#include <vector>
#include<cstdio>
#include<cstring>
#include<fstream>
#include <queue>
using namespace std;
#define NMax 100001
int n, k, animale[NMax], s, maxim;
int verifica(int A[], int n, int nrGrup)
{
s = 0;
for (int i = 0; i < n; i++)
{
if ( A[i] > nrGrup )
{
s = s + nrGrup;
}
else
{
s = s + A[i];
}
}
if (s >= nrGrup * k)
{
maxim = nrGrup;
return 1;
}
return 0;
}
void cautare(int li, int ls)
{
int m = (li + ls) / 2;
if (verifica(animale, n, m) && li <= ls)
{
cautare(m+1, ls);
}
else
if (li <= ls)
cautare(li, m-1);
}
int main()
{
FILE *f = fopen("grupuri.in", "r");
FILE *g = fopen("grupuri.out", "w");
fscanf(f, "%d %d", &k, &n);
int nrMaxGrup;
for (int i = 0 ; i < n; i++)
{
fscanf(f, "%d", &animale[i]);
nrMaxGrup += animale[i];
}
nrMaxGrup /= k;
cautare(0, nrMaxGrup);
fclose(f); fclose(g);
return 0;
}