Advertisement
SuitNdtie

RoadCut

Apr 9th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.     int n,m;
  6.     scanf("%d %d",&n,&m);
  7.     int TopDown[m+2];for(int i=1;i<=m+1;i++)TopDown[i] = 0;
  8.     int RightLeft[n+2];for(int i=1;i<=n+1;i++)RightLeft[i] = 0;
  9.     int sum = 0;
  10.     for(int i=1;i<=n;i++){
  11.         for(int j=1;j<=m;j++){
  12.             int val;
  13.             scanf("%d",&val);
  14.             RightLeft[i] += val;
  15.             TopDown[j] += val;
  16.             sum += val;
  17.         }
  18.     }
  19.     int ans = -2e9;
  20.     int TopDownADD[m+2];for(int i=0;i<=m+1;i++)TopDownADD[i] = 0;
  21.     int RightLeftADD[n+2];for(int i=0;i<=n+1;i++)RightLeftADD[i] = 0;
  22.    
  23.     for(int i=1;i<=n;i++){
  24.         for(int j=1;j<=m;j++){
  25.             int addval;
  26.             scanf("%d",&addval);
  27.             TopDownADD[j] += addval;
  28.             RightLeftADD[i] += addval;
  29.         }
  30.     }
  31.    
  32.     for(int i=1;i<=n;i++){
  33.         int newsum = sum - RightLeft[i] + RightLeftADD[i-1] + RightLeftADD[i+1];
  34.         if(newsum >= ans)ans = newsum;
  35.     }
  36.     for(int i=1;i<=m;i++){
  37.         int newsum = sum - TopDown[i] + TopDownADD[i-1] + TopDownADD[i+1];
  38.         if(newsum >= ans)ans = newsum;
  39.     }
  40.     printf("%d",ans);
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement