#include<stdio.h>
long long u[201],t[4];
int main()
{
long long i,n,m,m0,m1=0,m2,s=-4000000000000000000,s1=-1;
scanf("%lli %lli",&n,&m);
for(i=0;i<n;i++)
{
scanf("%lli",&u[i]);
t[i%4]+=u[i];
}
if(t[3]-t[0]>s)
{
s=t[3]-t[0];
s1=0;
}
if(t[0]-t[1]>s)
{
s=t[0]-t[1];
s1=1;
}
if(t[1]-t[2]>s)
{
s=t[1]-t[2];
s1=2;
}
if(t[2]-t[3]>s)
{
s=t[2]-t[3];
s1=3;
}
m0=m;
while(m0>1)
{
m0/=2;
m1++;
}
while(m1>0)
{
m0*=2;
m1--;
}
m0-=1;
m0+=n%4-s1;
while(m0>m)
m0-=4;
if(m0<n)
m0=n-1;
s=0;
for(i=n-1;i>=0;i--)
{
m1=m0;
m2=0;
while(m1>0)
{
if(m1%2==1)
m2++;
m1/=2;
}
s+=u[i]*m2;
m0--;
}
printf("%lli\n",s);
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include<stdio.h> long long u[201],t[4]; int main() { long long i,n,m,m0,m1=0,m2,s=-4000000000000000000,s1=-1; scanf("%lli %lli",&n,&m); for(i=0;i<n;i++) { scanf("%lli",&u[i]); t[i%4]+=u[i]; } if(t[3]-t[0]>s) { s=t[3]-t[0]; s1=0; } if(t[0]-t[1]>s) { s=t[0]-t[1]; s1=1; } if(t[1]-t[2]>s) { s=t[1]-t[2]; s1=2; } if(t[2]-t[3]>s) { s=t[2]-t[3]; s1=3; } m0=m; while(m0>1) { m0/=2; m1++; } while(m1>0) { m0*=2; m1--; } m0-=1; m0+=n%4-s1; while(m0>m) m0-=4; if(m0<n) m0=n-1; s=0; for(i=n-1;i>=0;i--) { m1=m0; m2=0; while(m1>0) { if(m1%2==1) m2++; m1/=2; } s+=u[i]*m2; m0--; } printf("%lli\n",s); return 0; } |
English