>>81が偉そうなんでムカついた。
次元を上げるんじゃねー、下げんだよ。

#include <stdio.h>

void line(int x, int a){
int i;
a = a < x/2 + 1 ? a : x/2 + 1;
for(i = 0; i < a; i++)
printf("■");
for(; i < x - a; i++)
printf("□");
for(; i < x; i++)
printf("■");
printf("\n");
}

int main()
{
int x, y, i;
scanf("%d %d", &x, &y);
for(i = 0; i < y/2; i++)
line(x, i + 1);
for(; i < y; i++)
line(x, y - i);
}