CodeForces 631B Print Check

对于每一个格子,看是行最后画还是列最后画。预处理一下就可以了。

#include<stdio.h>
#include<string.h>

int n,m,k;
int op[100000+10];
int id[100000+10];
int info[100000+10];
int high[200000+10];

int main()
{
    scanf("%d%d%d",&n,&m,&k);
    memset(high,-1,sizeof high);

    for(int i=1;i<=k;i++)
        scanf("%d%d%d",&op[i],&id[i],&info[i]);

    for(int i=k;i>=1;i--)
    {
        int y;
        if(op[i]==1) y=id[i];
        else y=id[i]+n;

        if(high[y]==-1) high[y]=i;
    }

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(high[i]==-1&&high[j+n]==-1) printf("0 ");
            else if(high[i]==-1&&high[j+n]!=-1) printf("%d ",info[high[j+n]]);
            else if(high[i]!=-1&&high[j+n]==-1) printf("%d ",info[high[i]]);
            else
            {
                if(high[i]>high[j+n]) printf("%d ",info[high[i]]);
                else printf("%d ",info[high[j+n]]);
            }
        }
        printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zufezzt/p/5244279.html