結果

提出番号 528
提出者 olphe
言語 C++
提出日時 2017-07-22 00:05:01
問題名 (31)ロシアの旗 (Russian Flag)
結果 AC
点数 100%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 2ms 7776KB
2 AC 100% 1ms 8336KB
3 AC 100% 1ms 8320KB
4 AC 100% 1ms 7792KB
5 AC 100% 2ms 7504KB

ソースコード

#include "iostream"
#include "climits"
#include "list"
#include "queue"
#include "stack"
#include "set"
#include "functional"
#include "algorithm"
#include "math.h"
#include "utility"
#include "string"
#include "map"
#include "unordered_map"
#include "iomanip"
#include "random"

using namespace std;
const long long int MOD = 1000000007;

long long int power(long long int x, long long int n, long long int M) {
	long long int tmp = 1;

	if (n > 0) {
		tmp = power(x, n / 2, M);
		if (n % 2 == 0) tmp = (tmp*tmp) % M;
		else tmp = (((tmp*tmp) % M)*x) % M;
	}
	return tmp;
}

long long int N, M, K, Q, W, H, L, R;
long long int ans;


int main() {
	ios::sync_with_stdio(false);
	string s[100];
	int b[100] = {};
	int r[100] = {};
	int w[100] = {};
	cin >> H >> W;
	for (int i = 0; i < H; i++)cin >> s[i];
	for (int i = 0; i < H; i++) {
		for (auto j : s[i]) {
			if (j == 'W')w[i]++;
			if (j == 'R')r[i]++;
			if (j == 'B')b[i]++;
		}
		w[i + 1] = w[i];
		r[i + 1] = r[i];
		b[i + 1] = b[i];
	}
	//cout << w[H] << " " << r[H] << " " << b[H] << endl;
	ans = 100000;
	for (int i = 0; i < H; i++) {
		for (int j = i + 1; j < H-1; j++) {
			ans = min(ans, (i + 1)*W - w[i] + (j - i)*W - b[j] + b[i] + (H - j - 1)*W - r[H] + r[j]);
		}
	}
	cout << ans << endl;
	return 0;
}