背单词
(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(" "); } return 0; }