Hi guys , I just solved the fifth problem of round 381 , Hope you like it , feel free to comment any better solution .
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2007;
pair<double,double> p[MAXN];
double dp[MAXN][MAXN];
int main(){
int n,x,y;;
cin>>n>>x>>y;
for (int i=0;i<n;i++){
cin>>p[i].first;
}
for (int i=0;i<n;i++){
cin>>p[i].second;
}
for (int k=0;k<n;k++){
double s=1-(1-p[k].first)*(1-p[k].second);
for (int i=min(x,k);i>=max(0,x-n+k);i–){
for (int j=min(y,k);j>=max(0,y-n+k);j–){
dp[i+1][j]=max(dp[i+1][j],dp[i][j]+p[k].first);
dp[i][j+1]=max(dp[i][j+1],dp[i][j]+p[k].second);
dp[i+1][j+1]=max(dp[i+1][j+1],dp[i][j]+s);
}
}
}
cout<<dp[x][y]<<endl;
return 0;
}