tendua

SPOJ - AMR11A

Jul 18th, 2012
632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.74 KB | None | 0 0
  1. //  Dynamic Programming (DP)
  2.  
  3. #include <stdio.h>
  4.  
  5. inline int min (int a, int b)
  6. {
  7.     return a < b? a:b;
  8. }
  9.  
  10. int main()
  11. {
  12.     int T, R, C, I, J, tmp;
  13.     scanf("%d",&T);
  14.     while (T--){
  15.         int arr[502][502];
  16.         scanf("%d %d",&R, &C);
  17.         int i, j;
  18.         for(i=1;i<=R;i++)
  19.             for (j=1;j<=C;j++)
  20.                 scanf("%d",&arr[i][j]);
  21.  
  22.         arr[R][C]=1;
  23.         for (i=C-1;i>=1;i--){
  24.             arr[R][i]=arr[R][i+1]-arr[R][i];
  25.             if (arr[R][i]<=0)arr[R][i]=1;
  26.         }
  27.  
  28.         for (i=R-1;i>=1;i--){
  29.             arr[i][C] = arr[i+1][C]-arr[i][C];
  30.             if (arr[i][C]<=0)arr[i][C]=1;
  31.         }
  32.  
  33.         for (i=R-1;i>=1;i--)
  34.             for (j=C-1;j>=1;j--){
  35.                 arr[i][j] = min (arr[i+1][j]-arr[i][j], arr[i][j+1]-arr[i][j]);
  36.                 if (arr[i][j]<=0)arr[i][j]=1;
  37.             }
  38.         printf("%d\n",arr[1][1]);
  39.     }
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment