Pagini recente » Cod sursa (job #508336) | Cod sursa (job #987620) | Cod sursa (job #1310157) | Cod sursa (job #863851) | Cod sursa (job #778670)
Cod sursa(job #778670)
#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;}