Skip to content

Commit c438baa

Browse files
Create MIXTURES
1 parent d05c33b commit c438baa

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

SPOJ/MIXTURES

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#include <iostream>
2+
#include<climits>
3+
using namespace std;
4+
5+
int a[1000];
6+
long long dp[1000][1000];
7+
8+
long long sum(int s,int e){
9+
long long ans = 0;
10+
for(int i=s;i<=e;i++){
11+
ans += a[i];
12+
ans %= 100;
13+
}
14+
return ans;
15+
}
16+
17+
long long solveMixtures(int i,int j){
18+
//Base case
19+
if(i>=j){
20+
return 0;
21+
}
22+
23+
//If the answer already there
24+
if(dp[i][j]!=-1){
25+
return dp[i][j];
26+
}
27+
//We to break our expression at every possible k
28+
29+
dp[i][j] = INT_MAX;
30+
for(int k=i;k<=j;k++){
31+
dp[i][j] = min(dp[i][j], solveMixtures(i,k)+solveMixtures(k+1,j)+sum(i,k)*sum(k+1,j));
32+
}
33+
return dp[i][j];
34+
}
35+
36+
37+
int main() {
38+
39+
int n;
40+
41+
while((scanf("%d",&n))!=EOF){
42+
43+
//Read N integers
44+
for(int i=0;i<n;i++){
45+
cin>>a[i];
46+
}
47+
48+
//Init dp with -1
49+
for(int i=0;i<=n;i++){
50+
for(int j=0;j<=n;j++){
51+
dp[i][j] = -1;
52+
}
53+
}
54+
cout<<solveMixtures(0,n-1)<<endl;
55+
56+
}
57+
58+
}

0 commit comments

Comments
 (0)