锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如:
3 5 2 6 1
2 3 4
1 6 2 7
读入若干对整数 (x,y),表示在第 x 行的末尾加上一个元素 y。输出最终的锯齿数组。初始时矩阵为空。
输入格式
第一行输入两个整数n,m(1≤n,m≤100000),其中 n 表示锯齿数组的行数,m 表示插入的元素总数。
接下来一共 m 行,每行两个整数x,y(1≤x≤n,0≤y≤100000),表示在第 x 行的末尾插入一个元素 y。
输出格式
一共输出 n 行,每行若干个用空格分隔的整数。如果某行没有任何元素,则输出一个空行。
输入/输出例子1
输入:
3 12 1 3 2 2 2 3 2 4 3 1 3 6 1 5 1 2 1 6 3 2 3 7 1 1
输出:
3 5 2 6 1 2 3 4 1 6 2 7
样例解释
无
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
vector<int>a[100001];
int n,m,x,y,L[100001],k;
int main(){
scanf("%d%d",&n,&m);
for(register int i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
a[x].insert(a[x].end(),y);
++L[x];
}
for(register int i=1;i<=n;++i)
{
for(register int j=0;j<L[i];++j)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}