Cod sursa(job #778670)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 15 august 2012 14:41:23
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
using namespace std;

ifstream f("grupuri.in");
ofstream g("grupuri.out");

int n,k,a[100002];
long long s;
int nrmax;
int rez;

int verifica(int nrlines)
{int i,j,p;
int nrcolumns=k;
p=1;   
i=0;
j=1;

while(p<n+1)
  {if(a[p]<=nrlines)
     {i=i+a[p];
      if(i>nrlines)
       {i=i-nrlines; j++;
        if(j>nrcolumns)
            return 1; }
      }
   else
     {j++;  
      if(j>nrcolumns)
        return 1;
      }
   p++;  
   }

if(j==nrcolumns && i==nrlines)
  return 1;

return 0;     
}

void cautare(int left, int right)
{if(right==left)
    {if (verifica(left)==1)
         rez=left;
     else
         rez=left-1;    
     return;}
 int mid=(left+right)/2;
 if(verifica(mid)==1)
   cautare(mid+1,right);
 else
   cautare(left,mid);      
    
}

int main()
{f>>k>>n;
for(int ii=1; ii<=n; ii++)
 {f>>a[ii];
  s+=a[ii];}
  
nrmax=(int)(s/k);  
 
cautare(1,nrmax); 
g<<rez; 

f.close();
g.close();
return 0;}