比赛 20120711 评测结果 AAAAAAAAATTT
题目名称 平衡奶牛 最终得分 75
用户昵称 Makazeu 运行时间 3.027 s
代码语言 C++ 内存使用 12.89 MiB
提交时间 2012-07-11 11:42:08
显示代码纯文本
#include <cstdlib>
#include <cstdio>
using namespace std;
typedef unsigned long long ull;
const int MAXN=100100;
class Cow
{
public:
	ull bit; int skill[31];
}C[MAXN];
int S[31],N,K;

inline void init()
{
	int n,t=1;
	scanf("%d %d\n",&N,&K);
	for(int i=1;i<=N;i++) 
	{
		scanf("%lld",&C[i].bit);
		ull tmp=C[i].bit; t=1;
		while(tmp)
		{
			n=tmp&1;
			if(n) C[i].skill[t]=C[i-1].skill[t]+1;
			else C[i].skill[t]=C[i-1].skill[t];
			tmp=tmp>>1;t++;
		}
		for(;t<=K;t++) C[i].skill[t]=C[i-1].skill[t];
		/*
		printf("%d---->  ",i);
		for(int j=1;j<=30;j++) 
			if(C[i].skill[j]>C[i-1].skill[j])
				printf("%d ",j);
		printf("\n");*/
	}
}

inline void baori()
{
	int ans=0;
	int Sk[31]={0};
	bool flag;
	for(int i=1;i<=N-ans;i++)
	{
		for(int j=N;j>=i;j--)
		{
			flag=1;
			for(int k=1;k<=K;k++)
				Sk[k]=C[j].skill[k]-C[i-1].skill[k];
			for(int k=2;k<=K;k++)
				if(Sk[k]!=Sk[k-1]) {flag=0;break;}
			if(flag)
			{
				if(j-i+1>ans) ans=j-i+1;
				break;
			}
		}
	}
	printf("%d\n",ans);
}

int main()
{
	freopen("balline.in","r",stdin);
	freopen("balline.out","w",stdout);
	init();
	baori();
	return 0;
}