题意:query 1 是把某行涂成一个色,2 是把一列涂成一个色,后涂的颜色覆盖前面的颜色。
一次遍历就可以解决,对于每个点,比较行列颜色的顺序,输入顺序大的那个的颜色。
#include<cstring> #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<iostream> #include<algorithm> using namespace std; int n, m, k; int r1[5005], c1[5005]; //i行(列)的颜色 int r1rank[5005], c1rank[5005]; //涂色顺序 int main(){ //freopen("a.txt", "r", stdin); while(scanf("%d%d%d", &n, &m, &k) != EOF){ memset(c1, 0, sizeof(c1)); memset(r1rank, 0, sizeof(r1rank)); memset(c1rank, 0, sizeof(c1rank)); memset(r1, 0, sizeof(r1)); for(int i =1 ; i<=k;i++){ int a, b ,c; scanf("%d%d%d", &a, &b, &c); //cout << a << b << c <<endl; if(a == 1){ r1[b] = c; r1rank[b] = i; }else if(a==2){ c1[b] = c; c1rank[b] = i; } } for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ if(r1rank[i] > c1rank[j]) cout << r1[i]; else cout << c1[j]; //cout << pic[i][j]; if(j != m) cout << " "; } cout << endl; } } return 0; }