Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- #define dim 1000
- ifstream fin("glp.in");
- ofstream fout("glp.out");
- int n, m;
- bool vl[dim];
- int a[dim], sol[dim], f[dim];
- int Din(int sul[], int s[], int m)
- {
- for(int i = 0; i <= m + 2; ++i)
- vl[i] = 0;
- sul[m] = s[m];
- vl[m] = 1;
- for(int i = m - 1; i >= 1; --i)
- {
- if(vl[i + 1])
- {
- bool ok = false;
- int s_cur = sul[i + 1] - s[i + 1] + s[i];
- if(!vl[i + 2] && !vl[i + 3] && i + 2 <= n)
- {
- s_cur += s[i + 2];
- vl[i + 2] = 1;
- ok = true;
- }
- if(s_cur > sul[i + 1])
- {
- sul[i] = s_cur;
- vl[i] = 1;
- vl[i + 1] = 0;
- }
- else
- {
- if (ok)
- vl[i + 2] = false;
- sul[i] = sul[i + 1];
- }
- }
- else
- {
- sul[i] = sul[i + 1] + s[i];
- vl[i] = 1;
- }
- }
- return sul[1];
- }
- int main()
- {
- fin >> n >> m;
- for(int i = 1; i <= n; ++i)
- {
- for(int j = 1; j <= m; ++j)
- fin >> a[j];
- f[i] = Din(sol, a, m);
- }
- fout << Din(sol, f, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement