【入门】数组存数
题目描述
今有N个数组,初始时,N个数组均为空。共有M次操作,每次在第X个数组中加入数字Y。问最终各数组中有多少数,并将它们排序输出。
比如,输入如下数据:
3 5
1 3
1 2
1 1
2 1
3 1
表示有3个数组,共有5次操作,分别向第1个数组存入3,第1个数组存入2,第1个数组存入1,第2个数组存入1,第3个数组存入1。
输出如下:
3 1 2 3
1 1
1 1
第1行表示:第1个数组中有3个数,排序结果为1 2 3
第2行表示:第2个数组中有1个数,排序结果为1
第3行表示:第3个数组中有1个数,排序结果为1
比如,输入如下数据:
3 5
1 3
1 2
1 1
2 1
3 1
表示有3个数组,共有5次操作,分别向第1个数组存入3,第1个数组存入2,第1个数组存入1,第2个数组存入1,第3个数组存入1。
输出如下:
3 1 2 3
1 1
1 1
第1行表示:第1个数组中有3个数,排序结果为1 2 3
第2行表示:第2个数组中有1个数,排序结果为1
第3行表示:第3个数组中有1个数,排序结果为1
输入
第一行两个整数N、M(N≤100000,M≤300000)。
接下来M行,每行两个整数X、Y,含义见试题描述。(1≤X≤N,Y≤10^9)
接下来M行,每行两个整数X、Y,含义见试题描述。(1≤X≤N,Y≤10^9)
输出
共N行,第i行第一个数SUM,表示第i个数组数的个数,接下来SUM个数,为排序之后的数组。
样例输入
3 5
1 3
1 2
1 1
2 1
3 1
样例输出
3 1 2 3
1 1
1 1
#include <bits/stdc++.h> using namespace std; int main(){ int n,m,i,j,x,y; cin>>n>>m; //定义二维的vector vector<vector<int> > v(100100); //也可以定义vector类型的数组 //vector<int> a[100100]; //读入m组指令 for(j=1;j<=m;j++){ cin>>x>>y; //向第x个数组中存入元素y. v[x-1].push_back(y); } //输出每一行的数 for(i=0;i<n;i++){ //对滴i行的数组排序 sort(v[i].begin(),v[i].end()); //输出第i行的数组由多少个数 cout<<v[i].size()<<" "; for(j=0;j<v[i].size();j++){ cout<<v[i][j]<<" "; } cout<<endl; } return 0; }