Pagini recente » Cod sursa (job #526897) | Cod sursa (job #2780031) | Cod sursa (job #1909721) | Cod sursa (job #1909049) | Cod sursa (job #2132445)
#include <bits/stdc++.h>
using namespace std;
int k,n,dp[100001][30],i,j,vl[100001][30],ans,q,l;
char c;
int v[100001];
int main()
{
freopen("blis.in","r",stdin);
freopen("blis.out","w",stdout);
scanf("%d ",&k);
scanf("%c",&c);
while(!feof(stdin))
{
v[++n]=c-'0';
scanf("%c",&c);
}
for(i=1;i<=n;i++)
for(j=i;j>=max(1,i-k+1);j--)
vl[i][i-j+1]=vl[i][i-j]+(1<<(i-j+1))*v[j];
dp[1][1]=1;
for(i=2;i<=n;i++)
for(j=i;j>=max(1,i-k+1);j--)
for(q=j-1;q>=max(1,j-k+1);q--)
for(l=1;l<=k;l++)
if(vl[q][l]>vl[i][i-j+1])
{
dp[i][i-j+1]=max(dp[i][i-j+1],dp[q][l]+1);
ans=max(ans,dp[i][i-j+1]);
}
printf("%d",ans);
return 0;
}