Pagini recente » Cod sursa (job #3252156) | Cod sursa (job #69132) | Cod sursa (job #342657) | Cod sursa (job #1322102) | Cod sursa (job #1670011)
#include <stdio.h>
#include <bitset>
#include <string.h>
using namespace std;
FILE*f=fopen("pietre.in","r");
FILE*g=fopen("pietre.out","w");
int v[60001];
int nu[60001];
int main()
{
int n,i,s,p,u,m;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++) {fscanf(f,"%d",&v[i]);nu[i]=0;}
v[n+1]=80001;
for (i=1;i<=60000;i++)
{
s=i;
p=1;
u=n;memset(nu,0,sizeof(nu));
while (s>0)
{
while (p<=u)
{
m=(p+u)/2;
if (v[m]<s) p=m+1;
else u=m-1;
}
if (v[p]>s)p--;
for (;p>=1&&nu[p];p--);
if (p>0) {s-=v[p];nu[p]=1;}
else s=-1;
u=n;
p=1;
}
if (s!=0) {fprintf(g,"%d",i-1);
break;}
}
fclose(g);
fclose(f);
return 0;
}