vector应用-数组存数问题

【入门】数组存数

题目描述

今有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

输入

第一行两个整数N、M(N≤100000,M≤300000)。
接下来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;
}
 

猜你喜欢

转载自www.cnblogs.com/echo-lu/p/11924435.html