#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*); int sum(block a){ if(a.ans[0]+a.ans[1]+a.ans[2]==0) return 0; return 1; } 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;i=n){ for(;icheck[i]){ if(i>2){ now=border[i-3]; }else{ now=0; } while(check[i]1){ c[now].ans[i-c[now].order]+=3-(j=c[now].ans[i-c[now].order]); check[i]+=j; now++; } } }else if(result[i]2){ now=border[i-3]; }else{ now=0; } for(j=now;j0){ if(now2){ now=border[i-3]; }else{ now=0; } } } */ } 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; }