http://codeforces.com/problemset/problem/837/B
一面旗帜上有3种颜色,判断三种颜色构成的图形形状是否相同。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <algorithm>
using namespace std;
int n,m;
char g[105][105];
int cnt[300]={0};
bool flag,ok;
int main(){
cin >> n >> m;
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
cin >> g[i][j];
}
}
if (n%3==0){
flag=true;
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
if (g[i][j]!=g[i/(n/3)*(n/3)][0]){
flag=false;
}
cnt[g[i][j]]++;
}
}
if (flag){
ok=true;
}
}
if (m%3==0){
flag=true;
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
if (g[i][j]!=g[0][(j/(m/3))*(m/3)]){
flag=false;
}
cnt[g[i][j]]++;
}
}
if (flag){
ok=true;
}
}
if (ok&&(cnt['R']==cnt['G']&&cnt['R']==cnt['B'])){
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
}