请您看看
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;//n个桶,m个数字
int a,b;
int cnt[1000] = {0};
int num1[1001] = {0};//数字
int num2[1001] = {0};//桶
vector<int> v[1001];
cin>>n>>m;
for(int i = 0; i < m; i++){
cin>>num1[i];
cin>>num2[i];
v[num2[i]].push_back(num1[i]); //O(1)
cnt[num2[i]]++;
}// O(n)
for(int i = 1; i <= n; i++){
sort(v[i].begin(),v[i].begin()+cnt[i]); //O(nlogn)
for(vector<int>::iterator it = v[i].begin();it!=v[i].end();it++)
cout<<*it<<" "; //O(n)
cout<<endl;
} //O(n^2*logn)
return 0;
}
C : 桶装数字
问题描述
yhf有 n个桶,每个桶里都装着一些数字(一个或多个),所有的数字总共有 m个。这天,lzh把yhf所有的桶全打翻了,数字洒了一地!所幸,每个数字都有它所在的桶的标记。yhf希望恢复所有的桶,但是他还要刷考研题目,于是他请你来完成这个任务。 由于yhf能在一秒内完成一套考研数学题,因此他希望你的程序能在一秒内得出结果。
输入格式
第一行输入两个整数 n,m,第二行到第 m+1 行,每行两个整数 x,t,分别表示这个数字和它所在的桶。 保证每个桶至少含有一个数字。
输出格式
输出 n 行,若第 i个桶含有 ki个数字,则第 i行输出 ki个整数,表示这个桶内的数字。注意:输出每个桶的数字时应按升序排序输出。
不用回答啦,找到问题了╰(●’◡’●)╮