Advertisement
a1ananth

c++ test

Oct 24th, 2011
1,128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. int d[1010][1010],f[1010][1010];
  4. int cost[1010][1010];
  5. int main()
  6. {
  7.        int i,j,k,n,m,a[1010];
  8.        while(scanf("%d %d",&n,&m)!=EOF)
  9.        {
  10.               for(i=1;i<=m;i++)
  11.                      scanf("%d",&a[i]);
  12.               m++;
  13.               a[m]=n;a[0]=0;
  14.               for(i=1;i<=m;i++)
  15.               {
  16.                      for(j=i;j<=m;j++)
  17.                             cost[i][j]=a[j]-a[i-1];
  18.               }
  19.               for(i=1;i<=m;i++)
  20.                      f[i][i]=i;
  21.               memset(d,0,sizeof(d));
  22.               for(i=1;i<=m-1;i++)
  23.               {
  24.                      for(j=1;i+j<=m;j++)
  25.                      {
  26.                             for(k=f[j][i+j-1];k<=f[j+1][i+j];k++)
  27.                             {
  28.                                    if(!d[j][i+j]||d[j][i+j]>d[j][k]+d[k+1][i+j]+cost[j][i+j])
  29.                                    {
  30.                                           f[j][i+j]=k;
  31.                                           d[j][i+j]=d[j][k]+d[k+1][i+j]+cost[j][i+j];
  32.                                    }
  33.                             }
  34.                      }
  35.               }
  36.               printf("%d\n",d[1][m]);
  37.        }
  38.        return 0;
  39. }
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement