Pagini recente » Cod sursa (job #816795) | Cod sursa (job #681202) | Cod sursa (job #2522078) | Cod sursa (job #2905257) | Cod sursa (job #1024074)
#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 MMax 200
int viz[NMax];
#define NMax 100001
int n, k, animale[NMax];
long long int maxim, s;
int verifica(int A[], int n, long long 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 binarySearch()
{
int val = 100000000000; long long int pas = 1<<30;
for (long long int i = 0; pas != NULL; pas /= 2)
if (i + pas <= val && verifica(animale, n, i + pas))
i = i + pas;
}
int main()
{
FILE *f = fopen("grupuri.in", "r");
FILE *g = fopen("grupuri.out", "w");
fscanf(f, "%d %d", &k, &n);
long long int nrMaxGrup;
for (int i = 0 ; i < n; i++)
{
fscanf(f, "%d", &animale[i]);
}
binarySearch();
fprintf(g, "%lld", maxim);
fclose(f); fclose(g);
return 0;
}