Cod sursa(job #2343249)

Utilizator AnnaLipianuLipianu Ana AnnaLipianu Data 13 februarie 2019 20:31:15
Problema Grupuri Scor 68
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
using namespace std;
int v[100005],a[100005][1001];
int main()
{
    long long s=0;
    freopen("grupuri.in","r",stdin);
    freopen("grupuri.out","w",stdout);
    int k,n,i,st,dr,ok,x,i1,j1,y,nr;
    scanf("%d%d",&k,&n);
    for(i=1;i<=n;i++)
    {
    	scanf("%d",&v[i]);
    	s=s+v[i];
    }
    st=1;
    dr=s/k;
    if(v[n]<=dr)
		printf("%d",dr);
	else
	{
    while(st<=dr)
    {
    	ok=0;
    	x=(st+dr)/2;
    	i1=j1=1;
    	for(i=1;i<=n&&i1<=k;i++)
    	{
    		if(v[i]<x)
				y=v[i];
			else
				y=x;
			while(j1<=x&&y!=0)
			{
				a[i1][j1]=i;
				y--;
				j1++;
			}
			if(j1==x+1)
			{
				j1=1;
				i1++;
			}
			while(y!=0)
			{
				a[i1][j1]=i;
				y--;
				j1++;
			}
    	}
    	if(i1==k+1)
    	ok=1;
		if(ok==1)
		{
			nr=x;
			st=x+1;
		}
		else
			dr=x-1;
    }
    printf("%d",nr);
	}
    return 0;
}