Untitled
unknown
plain_text
4 years ago
3.3 kB
8
Indexable
#include <iostream> #include <vector> #include <fstream> using namespace std; vector<vector<int>> a; vector<vector<int>> b; vector<vector<vector<int>>> c; int n; int m; void printA() { for (int j = 0; j < m; ++j) { for (int i = 0; i < n; ++i) { cout << a[i][j] << " "; } cout << endl; } } void printB() { for (int j = 0; j < m; ++j) { for (int i = 0; i < n; ++i) { cout << b[i][j] << " "; } cout << endl; } } void printC_S() { for (int j = 0; j < m; ++j) { for (int i = 0; i < n; ++i) { cout << c[i][j].size() << " "; } cout << endl; } } void printC() { for (int j = 0; j < m; ++j) { for (int i = 0; i < n; ++i) { cout << "[" << ""; for (int t = 0; t < b[i][j]; ++t) { cout << c[i][j][t] << ","; } cout << "]" << " "; for (int t = b[i][j]; t <= n; ++t) { cout << " "; } } cout << endl; } } void read() { ifstream fin("input.txt"); fin >> n; fin >> m; a.resize(n); b.resize(n); c.resize(n); for (int i = 0; i < n; ++i) { a[i] = vector<int>(); a[i].resize(m); b[i] = vector<int>(); b[i].resize(m); c[i] = vector<vector<int>>(); c[i].resize(m); } for (int j = 0; j < m; ++j) { for (int i = 0; i < n; ++i) { fin >> a[i][j]; b[i][j] = 0; } } } void process() { for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (a[i][j] == 1) { int newJ = j; int st = j; int et = j; for (int t = j; t < m; ++t) { if (a[i][t]==0) { et = t - 1; newJ = et; break; } else if (t==m-1) { et = t; newJ = et; break; } } int k = et - st + 1; for (int t = st; t <= et; ++t) { b[i][t] = k - t + st; c[i][t].resize(b[i][t]); } j = newJ; } } } for (int j = 0; j < m; ++j) { for (int t = 0; t < b[0][j]; ++t) { c[0][j][t] = t+1; } } int max = 0; for (int i = 1; i < n; ++i) { for (int j = 0; j < m; ++j) { for (int t = 0; t < b[i][j]; ++t) { if (b[i-1][j]<t+1) { c[i][j][t] = t + 1; } else { c[i][j][t] = t + 1 + c[i - 1][j][t]; } if (c[i][j][t]>max) { max = c[i][j][t]; } } } } cout << max << endl; } int main() { read(); process(); system("pause"); return 0; }
Editor is loading...