Advertisement
a53

Glasul pamantului

a53
Mar 11th, 2022
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. #define dim 1000
  5. ifstream fin("glp.in");
  6. ofstream fout("glp.out");
  7.  
  8. int n, m;
  9. bool vl[dim];
  10. int a[dim], sol[dim], f[dim];
  11. int Din(int sul[], int s[], int m)
  12. {
  13. for(int i = 0; i <= m + 2; ++i)
  14. vl[i] = 0;
  15. sul[m] = s[m];
  16. vl[m] = 1;
  17. for(int i = m - 1; i >= 1; --i)
  18. {
  19. if(vl[i + 1])
  20. {
  21. bool ok = false;
  22. int s_cur = sul[i + 1] - s[i + 1] + s[i];
  23. if(!vl[i + 2] && !vl[i + 3] && i + 2 <= n)
  24. {
  25. s_cur += s[i + 2];
  26. vl[i + 2] = 1;
  27. ok = true;
  28. }
  29. if(s_cur > sul[i + 1])
  30. {
  31. sul[i] = s_cur;
  32. vl[i] = 1;
  33. vl[i + 1] = 0;
  34. }
  35. else
  36. {
  37. if (ok)
  38. vl[i + 2] = false;
  39. sul[i] = sul[i + 1];
  40. }
  41. }
  42. else
  43. {
  44. sul[i] = sul[i + 1] + s[i];
  45. vl[i] = 1;
  46. }
  47. }
  48. return sul[1];
  49. }
  50. int main()
  51. {
  52.  
  53. fin >> n >> m;
  54.  
  55.  
  56. for(int i = 1; i <= n; ++i)
  57. {
  58. for(int j = 1; j <= m; ++j)
  59. fin >> a[j];
  60. f[i] = Din(sol, a, m);
  61. }
  62. fout << Din(sol, f, n);
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement