Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- int d[1010][1010],f[1010][1010];
- int cost[1010][1010];
- int main()
- {
- int i,j,k,n,m,a[1010];
- while(scanf("%d %d",&n,&m)!=EOF)
- {
- for(i=1;i<=m;i++)
- scanf("%d",&a[i]);
- m++;
- a[m]=n;a[0]=0;
- for(i=1;i<=m;i++)
- {
- for(j=i;j<=m;j++)
- cost[i][j]=a[j]-a[i-1];
- }
- for(i=1;i<=m;i++)
- f[i][i]=i;
- memset(d,0,sizeof(d));
- for(i=1;i<=m-1;i++)
- {
- for(j=1;i+j<=m;j++)
- {
- for(k=f[j][i+j-1];k<=f[j+1][i+j];k++)
- {
- if(!d[j][i+j]||d[j][i+j]>d[j][k]+d[k+1][i+j]+cost[j][i+j])
- {
- f[j][i+j]=k;
- d[j][i+j]=d[j][k]+d[k+1][i+j]+cost[j][i+j];
- }
- }
- }
- }
- printf("%d\n",d[1][m]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement