比赛 |
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;
}