记录编号 35511 评测结果 AAAAAAAAAA
题目名称 失落的猴子 最终得分 100
用户昵称 Gravatarkaaala 是否通过 通过
代码语言 C++ 运行时间 1.213 s
提交时间 2012-02-23 10:41:53 内存使用 4.25 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>

using namespace std;

int x[5010],xx[5010],y[5010],yy[5010],col[5010],N,M,K,Map[1010][1010];

void cover(int l,int r,int s,int d,int k,int c) 
{
    while(k<=K&&(r<=x[k]||l>=xx[k]||d<=y[k]||s>=yy[k])) 
		k++;
    if(k>K) 
	{
        for(int i=l+1;i<=r;i++)
            for(int j=s+1;j<=d;j++)
                Map[i][j]=c;
        return;
    }
    if(l<=x[k])
	{
        cover(l,x[k],s,d,k+1,c);
        l=x[k];
    }
    if(r>=xx[k])
	{
        cover(xx[k],r,s,d,k+1,c);
        r=xx[k];
    }
    if(s<=y[k]) 
	{
        cover(l,r,s,y[k],k+1,c);
        s=y[k];
    }
    if(d>=yy[k]) 
	{
        cover(l,r,yy[k],d,k+1,c);
        d=yy[k];
    }
}

int main() 
{
    freopen("lostmonkey.in","r",stdin);
    freopen("lostmonkey.out","w",stdout);
    scanf("%d%d%d",&N,&M,&K);
    x[0]=y[0]=col[0]=0;
    for(int i=1;i<=K;i++) 
	{
        scanf("%d%d%d%d%d",&x[i],&y[i],&xx[i],&yy[i],&col[i]);
        x[i]--;
        y[i]--;
    }
    for(int i=K;i>=0;i--)
        cover(x[i],xx[i],y[i],yy[i],i+1,col[i]);
    for(int i=1;i<=N;i++)
	{
        for(int j=1;j<=M;j++)
            printf("%d",Map[i][j]);
        printf("\n");
    }
    return 0;
}