Cod sursa(job #371981)

Utilizator Addy.Adrian Draghici Addy. Data 7 decembrie 2009 23:50:53
Problema Grupuri Scor 98
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#define Nmax 100002

int A[Nmax];
int n, k, i, p, u, mid, sol;
long long P, S;

int verif(int X) {
	int i;
	for (i = 1, P = 0; i <= n; i++) {
		if (A[i] <= X)
			P += A[i];
		else
			P += X;
		if (P >= X * k) {
			sol = X;
			return 1;
		}
	}
	return 0;
}

int main() {
	
	FILE *f = fopen("grupuri.in", "r");
	FILE *g = fopen("grupuri.out", "w");
	
	fscanf(f, "%d %d", &k, &n);
	
	for (i = 1; i <= n; i++) {
		fscanf(f, "%d", &A[i]);
		S += A[i];
	}
	
	p = 1, u = S / k;
	while (p <= u) {
		mid = (u - p) / 2 + p;
		if (verif(mid))
			p = mid + 1;
		else
			u = mid - 1;
	}
	
	fprintf(g, "%d", sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}