USACO Bronze 2016 December - The Cow-Signal

Authors: Benjamin Qi, Jesse Choe, Jeffery Meng, David Guo

Official Analysis (Java)

Explanation

We generate a larger grid repeating each character from the small grid both horizontally and vertically, so that every character becomes a block of identical characters in the final output.

To do this, we can first repeat each of the NN characters per row KK consecutive times, and repeat each of these expanded rows in the grid KK consecutive times as well.

Video Solution

By Jeffrey Meng

Video Solution Code

Implementation

Time Complexity: MNK2\mathcal{MN \cdot K^2}

C++

#include <bits/stdc++.h>
using namespace std;
void setIO(string name = "") {
ios_base::sync_with_stdio(0);
cin.tie(0);
if (name.size()) {
freopen((name + ".in").c_str(), "r", stdin);
freopen((name + ".out").c_str(), "w", stdout);
}

Java

import java.io.*;
import java.util.*;
public class CowSignal {
public static void main(String[] args) throws IOException {
BufferedReader read = new BufferedReader(new FileReader("cowsignal.in"));
StringTokenizer initial = new StringTokenizer(read.readLine());
int height = Integer.parseInt(initial.nextToken());
int width = Integer.parseInt(initial.nextToken());

Python

with open("cowsignal.in") as read:
height, width, scale = map(int, read.readline().split())
signal = [read.readline() for _ in range(height)]
with open("cowsignal.out", "w") as written:
for i in range(scale * height):
for j in range(scale * width):
print(signal[i // scale][j // scale], end="", file=written)
print(file=written)

Join the USACO Forum!

Stuck on a problem, or don't understand a module? Join the USACO Forum and get help from other competitive programmers!