Naomi's notebook

Naomi's notebook

発想(ARC093D - Grid Components)

atcoder.jp

これ昔参加したコンテストで、ツイッターに流れてくる解法を見て天才か!?ってなったので印象に残っている
最も感動した問題の一つ。なので永遠に記憶が消えないと思うからACしておこう。

ラクリはとても簡単で、連続した領域の数を調節するには、半分白半分黒にしておいて、その中に適切に一ますのもう片方の色を散りばめればいいだけ。すごい。

#include<cstdio>
#include<math.h>
#include<algorithm>
#include<vector>
#include<queue>
#include<string>
#include<set>
#include<cstring>

 
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define INF 1001001001
#define LLINF 1001001001001001001
#define mp make_pair
#define pb push_back
#define LLIandI pair<long long int , int>
#define ll long long
int main(void){
    int A,B;
    scanf("%d %d",&A,&B);
    char map[100][100];
    rep(i,100){
        rep(j,100){
            if(i<50){
                map[i][j]='.';
                if(i%2==0&&j%2==0&&B-1-(i/2)*50-(j/2)>0)map[i][j]='#';
            }else{
                map[i][j]='#';
                if(i%2==1&&j%2==1&&A-1-((99-i)/2)*50-(j/2)>0)map[i][j]='.';
            }
        }
    }
    printf("100 100\n");
    rep(i,100){
        rep(j,100){
            printf("%c",map[i][j]);
        }
        printf("\n");
    }
    
    
}