Advertisement
a53

left

a53
Dec 17th, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. #include <fstream>
  2. #include <cstring>
  3. using namespace std;
  4. #define DIM 1011
  5.  
  6. int A[DIM], B[DIM], C[DIM], AA[DIM], BB[DIM], CC[DIM];
  7. int V[DIM], W[DIM];
  8. int N, M, i, j, mx, x;
  9.  
  10. inline int maxim(int a, int b){
  11. if (a>b)
  12. return a;
  13. return b;
  14. }
  15.  
  16. int main(){
  17. ifstream f("left.in");
  18. ofstream g("left.out");
  19. f>>N>>M;
  20. for (j=1;j<=M;j++) {
  21. f>>x;
  22. V[j] = V[j-1] + x;
  23. }
  24. for (j=1;j<=M;j++) {
  25. f>>x;
  26. W[j] = W[j-1] + x;
  27. if (j==1) {
  28. B[j] = V[j] + W[j];
  29. C[j] = V[j+1] + W[j];
  30. } else
  31. if (j==M) {
  32. A[j] = V[j-1] + W[j];
  33. B[j] = V[j] + W[j];
  34. } else {
  35. A[j] = V[j-1] + W[j];
  36. B[j] = V[j] + W[j];
  37. C[j] = V[j+1] + W[j];
  38. }
  39. }
  40.  
  41. for (i=3;i<=N;i++) {
  42. memcpy(AA, A, sizeof(A));
  43. memcpy(BB, B, sizeof(B));
  44. memcpy(CC, C, sizeof(C));
  45. for (j=1;j<=M;j++) {
  46. f>>x;
  47. W[j] = W[j-1] + x;
  48. if (j==1) {
  49. B[j] = W[j] + CC[j];
  50. C[j] = W[j] + maxim(AA[j+1], BB[j+1]);
  51. } else
  52. if (j==M) {
  53. A[j] = W[j] + maxim(BB[j-1], CC[j-1]);
  54. B[j] = W[j] + AA[j];
  55. } else {
  56. A[j] = W[j] + maxim(BB[j-1], CC[j-1]);
  57. B[j] = W[j] + maxim(AA[j], CC[j]);
  58. C[j] = W[j] + maxim(AA[j+1], BB[j+1]);
  59. }
  60. }
  61. }
  62.  
  63. f.close();
  64.  
  65. mx = maxim(maxim(B[1], C[1]), maxim(A[M], B[M]));
  66. for (i=2;i<M;i++)
  67. if (mx < maxim(maxim(A[i], B[i]), C[i]))
  68. mx = maxim(maxim(A[i], B[i]), C[i]);
  69.  
  70.  
  71. g<<mx;
  72. g.close();
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement