下面是我的错误代码,这个只能过69%
#include
using namespace std;
int a[100009],b[100009],c[100009];
int main()
{
int n,l,k,i,j,s1,s2,s3,q1,k1;
while(cin>>n>>l)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(i=0;i
{
cin>>a[i];
}
sort(a,a+n);
q1=8*l/n;
k1=1;
for(i=1;i<=q1;i++)
{
k1=k1*2;
}
for(i=k1;i<=k1*2;i++)
{ k1=i;
if(log(i)/log(2)*n>8*l)
{
k1=i-1;break;
}
}
j=0;b[0]=a[0];c[0]++;
for(i=1;i<n;i++)
{
if(a[i]!=a[i-1])
{
j++;
b[j]=a[i];
c[j]++;
}
else
{
c[j]++;
}
}
s2=0;
if(k1<j+1)//最多k1种,实际有j+1种
{
s1=j+1-k1;
s3=0;
i=0;k=j;
while(i<k&&s3<s1)
{
if(c[i]<c[k])
{
s2+=c[i];
i++;s3++;
}
else
{
s2+=c[k];
k--;s3++;
}
}
}
cout<<s2<<endl;
}
return 0;
}