记录编号 |
39489 |
评测结果 |
AAAAAAAAAAAA |
题目名称 |
平衡奶牛 |
最终得分 |
100 |
用户昵称 |
Makazeu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.345 s |
提交时间 |
2012-07-12 10:07:29 |
内存使用 |
12.91 MiB |
显示代码纯文本
/*
*Problem : balline
*Author : Yee-fan Zhu
*Data : July 11,2012
*Sol : Hash(STL map)
*/
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <map>
#include <algorithm>
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;
typedef vector<int> Vec;
map<Vec,int> hash;
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];
}
}
int main()
{
freopen("balline.in","r",stdin);
freopen("balline.out","w",stdout);
init();
Vec tmpvec;
int pos,ans=0;
tmpvec.clear();
for(int i=1;i<=K-1;i++)
tmpvec.push_back(0);
hash[tmpvec]=1;
for(int i=1;i<=N;i++)
{
tmpvec.clear();
for(int j=2;j<=K;j++)
tmpvec.push_back(C[i].skill[j]-C[i].skill[j-1]);
if(hash[tmpvec]==0)
hash[tmpvec]=i+1;
else
{
pos=hash[tmpvec];
if(i-pos+1>ans)
ans=i-pos+1;
}
}
printf("%d\n",ans);
return 0;
}