Submission #126044

# Submission time Handle Problem Language Result Execution time Memory
126044 2019-07-06T20:49:07 Z streifi Orchard (NOI14_orchard) C++14
17 / 25
194 ms 16800 KB
#include <iostream>
#include <vector>
using namespace std;

const int INF = 0x3f3f3f3f;

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int N, M;
	cin >> N >> M;
	
	vector<vector<int>> v(N, vector<int>(M)), cum(N+1, vector<int>(M+1, 0));
	for (int n = 0; n < N; ++n) {
		for (int m = 0; m < M; ++m) {
			cin >> v[n][m];
			if (v[n][m] == 0) v[n][m] = -1;
			cum[n+1][m+1] = cum[n+1][m]+cum[n][m+1]-cum[n][m]+v[n][m];
			//cout << cum[m+1] << endl; 
		}
	}
	
	/*for (int n = 1; n <= N; ++n) {
		for (int m = 1; m <= M; ++m) {
			cout << cum[n][m] << " ";
		}
		cout << endl;
	}*/
	
	int best = INF;
	for (int i = 0; i < N; ++i) {
		for (int j = i; j < N; ++j) {
			int mxpos = M-1;
			for (int m = M-1; m >= 0; --m) {
				if (cum[j+1][m+1] > cum[j+1][mxpos+1]) mxpos = m;
				int cntin = (j-i+1)*(mxpos-m+1);
				int cntout = N*M-cntin;
				int out = cum[N][M]-cum[j+1][mxpos+1]+cum[j+1][m]+cum[i][mxpos+1]-cum[i][m];
				int in = cum[N][M]-out;//(cum[j+1][mxpos+1]-cum[j+1][m]-cum[i][mxpos+1]-cum[i][m]);
				
				//cout << cntin << " " << in << " " << cntout << " " << out << endl;
				best = min(best, cntin - in + cntout + out);
				/*if (i == 1 && j == 3 && m == 1 && mxpos == 5) {
					cout << i << " " << m << " " << j << " " << mxpos << endl;
					cout << cntin << " " << in << " " << cntout << " " << out << endl;
				}*/
			}
		}
	}
	cout << best/2 << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 632 KB Output is correct
2 Correct 3 ms 632 KB Output is correct
3 Correct 3 ms 632 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 97 ms 16800 KB Output is correct
2 Correct 97 ms 16556 KB Output is correct
3 Correct 99 ms 16732 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 3112 KB Output is correct
2 Incorrect 20 ms 3056 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 380 KB Output is correct
2 Correct 8 ms 504 KB Output is correct
3 Correct 8 ms 504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 194 ms 6688 KB Output isn't correct
2 Halted 0 ms 0 KB -