### daspriyajit10's blog

By daspriyajit10, history, 7 weeks ago,

/*package whatever //do not write package name here */

import java.util.*; import java.lang.*; public class GFG { public static void main (String[] args) { Scanner sc=new Scanner(System.in); int t=sc.nextInt();

    while(t-->0){

int n=sc.nextInt();
int k=sc.nextInt();
int z=sc.nextInt();
int k1=k-1;
int a[]=new int[n];
for(int i=0;i<n;i++){
a[i]=sc.nextInt();

}

int sum=a[0];

if(n>1){
sum=sum+a[1];

}

for(int i=1;i<n-1;i++){

if( a[i+1]<a[i-1] && z>0 &&  k1>0 ){

int flag=0;int count=0;int sum1=sum;
int res=a[i-1];int re=0;int d=0;
for(int j=i+1;j<=k1 &&  j<n;j++){
count++;

if(a[j]>=res){

res=a[j];
re=a[j-1];
d=j;

flag=1;

}
if(a[j]<res && flag==1){

break;
}
}

if(flag==1){
for(int l=i+1;l<=d;l++){
sum1=sum1+a[l];
}
int u=0;
int v=0;
int x=k-(count+i);
int x1=x/2;
int rem=x-x1;
int y1=Math.min(rem,z);
if(y1<x1){
u=res*y1+sum1+ re*y1;
}
else{
u=res*x1+sum1+ re*y1;
}
int p=k-i;
int q=p/2;
int rem1=p-q;
int y2=Math.min(rem1,z);
if(y2<q){
v=a[i]*y2+sum+a[i-1]*y2;
}
else{
v=a[i]*q+sum+a[i-1]*y2;
}

if(u>v){
sum=sum+a[i+1];

k1--;
}
else{
if(y2<q){
sum=a[i]*y2+sum+a[i-1]*y2;
k1=k1-y2;
z=z-y2;
k1=k1-y2;
i--;
}
else{
sum=a[i]*q+sum+a[i-1]*y2;
k1=k1-q;
z=z-y2;
k1=k1-y2;
}

}

}
else{
int p=k-i;
int q=p/2;
int rem1=p-q;
int y2=Math.min(rem1,z);

if(y2<q){
sum=a[i]*y2+sum+a[i-1]*y2;
k1=k1-y2;
z=z-y2;
k1=k1-y2;
i--;
}
else{
sum=a[i]*q+sum+a[i-1]*y2;
k1=k1-q;
z=z-y2;
k1=k1-y2;
i--;
}

}
}

else {
if(k1>0){

sum+=a[i+1];

k1--;
}

}
}

System.out.println(sum);
}

}


}

• -18