#include #include int w,n,result[10000],border[10000],check[10000]; typedef struct{ int ans[3]; int order; int id; } block; block c[30000]; int cmp(const void*,const void*); int cmp_id(const void*,const void*); void print(){ block copy[30000]; int i,j; memcpy(copy,c,sizeof(c)); for(i=0;i=3-j) printf("#"); else printf("."); if(copy[i].ans[1]>=3-j) printf("#"); else printf("."); if(copy[i].ans[2]>=3-j) printf("#"); else printf("."); printf("\n"); } } printf("--\n"); } int main(){ int h,i,j,now,lj; char s; scanf("%d %d %d",&h,&w,&n); getchar(); for(i=0;icheck[c[i].order+j]){ c[i].ans[j]=1; check[c[i].order+j]++; break; } } } /*i=0; j=0; lj=0; while(i=n){ for(;icheck[i]){ /*if(i>2){ now=border[i-3]; }else{ now=0; }*/ now=0; while(check[i]=0 && i-c[now].order<3){ if(result[i]-check[i]>2){ c[now].ans[i-c[now].order]+=(j=3-c[now].ans[i-c[now].order]); }else{ j=3-c[now].ans[i-c[now].order]; c[now].ans[i-c[now].order]+=(j=(j>result[i]-check[i])?result[i]-check[i]:j); } check[i]+=j; } now++; } } } qsort(c,n,sizeof(block),cmp_id); for(i=0;i=3-j) printf("#"); else printf("."); if(c[i].ans[1]>=3-j) printf("#"); else printf("."); if(c[i].ans[2]>=3-j) printf("#"); else printf("."); printf("\n"); } } return 0; } int cmp(const void* a,const void* b){ return ((block *)a)->order-((block *)b)->order; } int cmp_id(const void *a,const void *b){ return ((block*)a)->id-((block*)b)->id; }