Cod sursa(job #1024074)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 8 noiembrie 2013 10:13:12
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#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;
}