Pagini recente » Cod sursa (job #1553804) | Cod sursa (job #1866588) | Cod sursa (job #3234568) | Cod sursa (job #785447) | Cod sursa (job #1023461)
#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
#define NrMaxGr 1000000
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);
for (int i = 0 ; i < n; i++)
{
fscanf(f, "%d", &animale[i]);
}
cautare(0, NrMaxGr);
fclose(f); fclose(g);
return 0;
}