Cod sursa(job #197155)

Utilizator marinMari n marin Data 2 iulie 2008 08:37:40
Problema Grupuri Scor 66
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <stdio.h>
#define DIM 100002

long int n,k,s,p,u,m,i,S;
long int A[DIM];

int merge(int x) {
  s = 0;
  for (i=1;(i<=n);i++) {
    if (A[i]<=x) s+=A[i];
    else s+=x;
  }
  if (s<k*x) return 0;
  else return 1;
}

int main(){
  FILE *f = fopen("grupuri.in","r");
  fscanf(f,"%ld %ld",&k,&n);
  for (i=1;i<=n;i++) {
    fscanf(f,"%ld",&A[i]);
    S+=A[i];
  }
  fclose(f);

  p=1;
  u=S;

  while (p<=u) {
    m=(p+u)/2;
    if (merge(m))
      p=m+1;
    else
      u=m-1;
  }
  FILE *g = fopen("grupuri.out","w");
  fprintf(g,"%ld",u);
  fclose(g);

  return 0;
}