B. Flag of Berland
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

The flag of Berland is such rectangular field n × m that satisfies following conditions:

  • Flag consists of three colors which correspond to letters 'R', 'G' and 'B'.
  • Flag consists of three equal in width and height stripes, parralel to each other and to sides of the flag. Each stripe has exactly one color.
  • Each color should be used in exactly one stripe.

You are given a field n × m, consisting of characters 'R', 'G' and 'B'. Output "YES" (without quotes) if this field corresponds to correct flag of Berland. Otherwise, print "NO" (without quotes).

Input

The first line contains two integer numbers n and m (1 ≤ n, m ≤ 100) — the sizes of the field.

Each of the following n lines consisting of m characters 'R', 'G' and 'B' — the description of the field.

Output

Print "YES" (without quotes) if the given field corresponds to correct flag of Berland . Otherwise, print "NO" (without quotes).

Examples
input
6 5
RRRRR
RRRRR
BBBBB
BBBBB
GGGGG
GGGGG
output
YES
input
4 3
BRG
BRG
BRG
BRG
output
YES
input
6 7
RRRGGGG
RRRGGGG
RRRGGGG
RRRBBBB
RRRBBBB
RRRBBBB
output
NO
input
4 4
RRRR
RRRR
BBBB
GGGG
output
NO
Note

The field in the third example doesn't have three parralel stripes.

Rows of the field in the fourth example are parralel to each other and to borders. But they have different heights — 2, 1 and 1.

这题还是不错的,题意是如果 可以分割成3条,R G B各一条,那就输出YES,每条可以包含多行,但是每条的行数必须相等

打了一大堆补丁,最后过了

n,m = map(int,raw_input().split())
mark = 1
s = []
for i in range(n):
tmp = raw_input();
s.append(tmp);
for c in range(m):
if c + 1 < m and tmp[c] != tmp[c + 1]:
mark = 0;
r = 0
g = 0
b = 0
for a in s:
for c in a:
if c =='R':
r = r + 1
if c == 'G':
g = g + 1
if c == 'B':
b = b + 1
if mark == 1:
num = 1
w = []
for i in range(n):
if i + 1 < n and s[i][0] == s[i + 1][0]:
num = num + 1;
else:
w.append(int(num))
num = 1;
for i in range(len(w)):
if i + 1 < len(w) and w[i] != w[i + 1]:
mark = 2;
if mark == 1 and len(w) == 3 and r == g and g == b:
print "YES"
else:
print "NO"
else :
for y in range(m):
for x in range(n):
if x + 1 < n and s[x][y] != s[x + 1][y]:
mark = 2;
break;
if mark == 2:
print "NO"
else :
num = 1
w = []
for i in range(m):
if i + 1 < m and s[0][i] == s[0][i + 1]:
num = num + 1
else:
w.append(int(num));
num = 1;
for i in range(len(w)):
if i + 1 < len(w) and w[i] != w[i + 1]:
mark = 2;
if mark == 0 and len(w) == 3 and r == g and g ==b:
print "YES"
else:
print "NO"

B. Flag of Berland的更多相关文章

  1. Codefroces Educational Round 26 837 B. Flag of Berland

    B. Flag of Berland time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  2. AC日记——Flag Codeforces 16a

    A. Flag time limit per test 2 seconds memory limit per test 64 megabytes input standard input output ...

  3. CF16A Flag

    CF16A Flag 题意翻译 题目描述 根据一项新的ISO标准,每一个国家的国旗应该是一个n×m的格子场,其中每个格子最多有10种不同的颜色.并且国旗应该有条纹:旗帜的每一行应包含相同颜色的方块,相 ...

  4. Educational Codeforces Round 26 B,C

    B. Flag of Berland 链接:http://codeforces.com/contest/837/problem/B 思路:题目要求判断三个字母是否是条纹型的,而且宽和高相同,那么先求出 ...

  5. Educational Codeforces Round 26 A B C题

    题目链接 A. Text Volume 题意:计算句子中,每个单词大写字母出现次数最多的那个的出现次数(混不混乱QAQ). 解题思路:注意getchar()就没啥了. #include<cstd ...

  6. Codeforces Round #207 (Div. 2)A B C E 水 思路 set 恶心分类

    A. Group of Students time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. Educational Codeforces Round 26

    Educational Codeforces Round 26 困到不行的场,等着中午显示器到了就可以美滋滋了 A. Text Volume time limit per test 1 second ...

  8. Codeforces Round #375 (Div. 2) D. Lakes in Berland dfs

    D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. B. Berland Bingo

    Lately, a national version of a bingo game has become very popular in Berland. There are n players p ...

随机推荐

  1. 关于自由拖拽完成的剪切区域(UI组件之图片剪切器)

    var x, y,areaWidth,areaHeight; var down;//闪光的判断标准,很好 addEvent(canvas,'mousedown',function(e){ // con ...

  2. PS小demo

    1.打开图像素材. 2.图层 >> 添加调整图层 >> 色相/饱和度. 得到如下效果: 3.创建新图层,将图层混合模式设为“柔光”,选择笔刷工具,硬度100%,按下图所示绘制该 ...

  3. Python+selenium(多表单、多窗口切换)

    多表单切换 案例:在Frame.html文件种定位搜狗搜索页面,进行搜索操作 Frame.html <html> <head> <title>Frame_test& ...

  4. 关于系统中使用多个PropertyPlaceholderConfigurer的配置

    多数的鲜为人知方法都是因为有着罕见的应用,就比如说Spring中PropertyPlaceholderConfigurer这个类,它是用来解析Java Properties属性文件值,并提供在spri ...

  5. 洛谷P2814 家谱(gen)

    题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...

  6. js1:对象的学习,构造函数,继承构造函数【使用教材:JavaScript深度剖析第2版】

    原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>js</title> & ...

  7. Separate code and data contexts: an architectural approach to virtual text sharing

    The present invention provides a processor including a core unit for processing requests from at lea ...

  8. linux下库文件的编程

    编程到了一定的时候,总喜欢追求新的东西.将代码尽量模块化就是我的追求之一,原来只是满足于将代码从单文件中分离,通过头文件和实现文件实现模块化,后来发现最好的方法是打包成库文件,使用更加方便.尽管在li ...

  9. Python闭包函数

    闭包 闭包:python中的闭包从表现形式上定义(解释)为: 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). 先看一个函数: ...

  10. 123. Best Time to Buy and Sell Stock III ~~

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...