2015年3月23日 星期一

2015/03/23 資芽2015 109 / 2014算法班練習賽_pB

// http://2015.sprout.csie.org/oj/pro/109/
#include <algorithm>
#include <iostream>
#include <cstdio>

using namespace std;

char c[20][1000000];
int H = 1, W = 1;

void output()
{
    for(int Hi = 0; Hi < H; Hi++)
    {
        for(int Wi = 0, Wj = 0; Wi < W; Wi++)
        {
            if( c[Hi][Wi] == 'O' )
            {
                while( Wj <= Wi ) putchar(c[Hi][Wj++]);
            }
        }

        puts("");
    }

}

void update()
{
    int y;

    if( H == 1 && W == 1 ) y = 0;
    else y = W;

    for(int Hi = 0; Hi < H; Hi++)
        for(int Wi = 0; Wi < W; Wi++)
            c[Hi+1][Wi+y] = c[Hi][Wi];

    if( H == 1 && W == 1 ) H++;
    else H++, W *= 2;
}

int main()
{
    fill(c[0], c[19]+1000000, '.');
    c[0][0] = 'O';

    for(int i = 0; i <= 16; i++)
    {
        output();
        update();

        if( i != 16 ) puts("");
    }
}

沒有留言:

張貼留言