#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; } |