Cod sursa(job #461677)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 8 iunie 2010 09:21:14
Problema Grupuri Scor 74
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#define DIM 100002

int A[DIM];
int N, K, X;
int i, j, k ,c;
int p, u, S; 

int min (int a, int b){
	if (a > b) a = b;
	return a;
}

int complt (){
	
	for (i=1,k=0;i<=N;i++) {
		if (A[i]<=X)
			k+=A[i];
		else
			k+=X;
		if (k>=K*X)
			return 1;
	}
	return 0;
	
/*
	i = j = 0, k = c = 1;
	while ( A[k] == 0 && k <= N ) ++k;
	
	while ( !(i == 0 && c == K+1) ){
		++i, ++j;			
		if ( i == X ) i = 0, ++c;
		if ( j == A[k] || j == X) j = 0, ++k;
		while ( A[k] == 0 && k <= N) ++k;
		if ( k > N && i > 0) break;
	}		
*/
}

int main (){
	
	freopen ("grupuri.in", "r", stdin);
	freopen ("grupuri.out", "w", stdout);
	
	scanf ("%d %d", &K, &N);
	for (i=1; i<=N; i++) {
		
		scanf ("%d", &A[i]);
		S+=A[i];
	}

	S/=K;
	p = 1, u = S;
	while (p <= u){
		X = p + (u - p) / 2;
		
		
		
		if (complt ())
			p = X + 1;
		else
			u = X - 1;		
	}
	
	printf ("%d", u);
	
	return 0;
}