CCC '09 S2 - Lights Going On and Off

View as PDF

Submit solution

Points: 10
Time limit: 1.0s
Memory limit: 64M

Problem type
Allowed languages
Ada, Assembly, Awk, Brain****, C, C#, C++, COBOL, CommonLisp, D, Dart, F#, Forth, Fortran, Go, Groovy, Haskell, Intercal, Java, JS, Kotlin, Lisp, Lua, Nim, ObjC, OCaml, Octave, Pascal, Perl, PHP, Pike, Prolog, Python, Racket, Ruby, Rust, Scala, Scheme, Sed, Swift, TCL, Text, Turing, VB, Zig
Canadian Computing Competition: 2009 Stage 1, Senior #2

For your birthday, you have been given a grid of R (1 < R < 30) rows of lights, with each row containing L (1 \le L < 8) lights. Lights can be in one of two states: on or off. For this question, the topmost row is row R, and the bottom-most row is row 1. Also, beside all rows except the topmost row (row R), there is a button which can be pushed.

Pushing the button beside row k (1 \le k < R) will peform an "exclusive-or" operation on each light of row k, which is described below. Consider column i in row k, where 1 \le i \le L. If the lights in column i of row k and column i of row k + 1 are both the same (i.e., both on, or both off), then pushing the button beside row k will cause the light in column i of row k to be off. If the lights in column i of row k and column i of row k + 1 are different (i.e., one is on, and the other is off), then pushing the button beside row k will cause the light in column i of row k to be on. An example is shown below, for L = 4:

Column Numbers 1 2 3 4
Row k+1 on on off off
Row k before button pushed on off on off
Row k after button pushed off on on off

You are told which lights are initially on and which are initially off. You must calculate how many different light patterns are possible for the bottom row by any sequence of button pushes. Each button may only be pressed once, but in any order.

Input Specification

The first line of input will contain the integer R, the number of rows. The second line of input will contain the integer L, the number of lights per row. The next R lines of input will contain L integers, where the integer will either be 0 (to indicate "off") or 1 (to indicate "on"). Pairs of consecutive integers will be separated by one space character. These R lines will be given in topdown order: that is, the third line of input will be the description of row R, the fourth line will be R - 1, and so on, until the last line describes the bottom row.

Output Specification

Output the number of possible light patterns of the bottom row.

Sample Input

0 0 1
0 1 1
1 0 1
0 0 1

Sample Output


CCC problem statements in large part from the PEG OJ


  • 6
    kylezheng7  commented on May 24, 2020, 3:18 p.m.

    I've never been more confused in my life

  • 26
    puppy  commented on Nov. 24, 2019, 10:48 a.m.

    worst birthday present ever

  • -23
    MinecraftRoblox7380  commented on Nov. 24, 2019, 9:17 a.m. edited

    This comment is hidden due to too much negative feedback. Click here to view it.

  • -4
    Jasper  commented on Aug. 16, 2019, 2:28 p.m.


  • 2
    const  commented on June 25, 2019, 4:12 p.m.

    arock is listed twice under Best Submissions (

  • 50
    ThatGuyOnTheStreet  commented on Dec. 16, 2018, 5:17 p.m.

    what kind of parent would buy their kids this

  • 25
    discoverMe  commented on March 23, 2018, 12:08 p.m. edited

    do you have to press every button?

    update:no you don't