背单词

背单词


(word.c/cpp/pas)


【题目描述】


fqk 退役后开始补习文化课啦, 于是他打开了英语必修一开始背单
词。 看着满篇的单词非常头疼, 而每次按照相同的顺序背效果并不好,
于是 fqk 想了一种背单词的好方法!他把单词抄写到一个 n 行 m 列的
表格里,然后每天背一行或者背一列。他的复习计划一共有 k 天,在
k 天后, fqk 想知道,这个表格中的每个单词,最后一次背是在哪一
天呢?


【输入格式】


第一行三个整数 k m n , , 。
接下来 k 行,每行的格式可能如下:
1. r ,表示当前天 fqk 背了第 r 行的单词。
. 2 c ,表示当前天 fqk 背了第 c 列的单词。


【输出格式】


输出包含 n 行, 每行 m 个整数, 表示每个格子中的单词最后一次背
是在哪天,如果这个单词没有背过,则输出 0 。


【输入样例】


3 3 3
1 2
2 3
1 3


【输出样例】


0 0 2
1 1 2
3 3 3


【数据范围】


对于 % 30 的数据, 1000 , ,  k m n 。
对于 % 100 的数据, 100000 , 100000 , 5000 ,     k m n m n 。


【时空限制】


对于每个测试点,时间限制为 s 1 ,空间限制为 MB 512 。

 

思路:

  大模拟不解释

 

来,上代码:

#include<cstdio>

using namespace std;

int ha[5001],li[5001],n,m,k,flag,cur;

char ch;

void qread(int &x)
{
    x=0;ch=getchar();
    while(ch<'0'||ch>'9') ch=getchar();
    while(ch>='0'&&ch<='9'){x=x*10+(int)(ch-'0');ch=getchar();}
}

int max(int a,int b){return a>b?a:b;}

int main()
{
    qread(n),qread(m),qread(k);
    for(int i=1;i<=k;i++)
    {
        qread(flag),qread(cur);
        if(flag==1) ha[cur]=i;
        else li[cur]=i;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            printf("%d ",max(ha[i],li[j]));
        }
        printf("\n");
    }
    return 0;
}

 

posted @ 2016-11-09 19:04  IIIIIIIIIU  阅读(229)  评论(0编辑  收藏  举报