Problem Statement
In Republic of Atcoder, there are N prefectures, and a total of M cities that belong to those prefectures.
City i is established in year Yi and belongs to Prefecture Pi.
You can assume that there are no multiple cities that are established in the same year.
It is decided to allocate a 12-digit ID number to each city.
If City i is the x-th established city among the cities that belong to Prefecture i, the first six digits of the ID number of City i is Pi, and the last six digits of the ID number is x.
Here, if Pi or x (or both) has less than six digits, zeros are added to the left until it has six digits.
Find the ID numbers for all the cities.
Note that there can be a prefecture with no cities.
Constraints
- 1≤N≤105
- 1≤M≤105
- 1≤Pi≤N
- 1≤Yi≤109
- Yi are all different.
- All values in input are integers.
Input
Input is given from Standard Input in the following format:
N M P1 Y1 : PM YM
Output
Print the ID numbers for all the cities, in ascending order of indices (City 1, City 2, …).
Sample Input 1
Copy
2 3 1 32 2 63 1 12
Sample Output 1
Copy
000001000002 000002000001 000001000001
- As City 1 is the second established city among the cities that belong to Prefecture 1, its ID number is 000001000002.
- As City 2 is the first established city among the cities that belong to Prefecture 2, its ID number is 000002000001.
- As City 3 is the first established city among the cities that belong to Prefecture 1, its ID number is 000001000001.
Sample Input 2
Copy
2 3 2 55 2 77 2 99
Sample Output 2
Copy
000002000001 000002000002 000002000003
先整个进行时间的排序,再遍历一遍
#include<cstdio>
#include<algorithm>
using namespace std;
struct ss{
int rank;
int p;
int y;
}a[100005];
int cmp(ss x,ss y){
if(x.p!=y.p) return x.p<y.p;
else return x.y<y.y;
}
int main()
{
int n ,m;
scanf("%d%d",&n,&m);
int b[100005];
for(int i=0;i<m;i++){
a[i].rank=i;
scanf("%d%d",&a[i].p,&a[i].y);
b[i]=a[i].p;
}
sort(a,a+m,cmp);
int f=a[0].p,flag=1;
int x[100005];
for(int i=0;i<m;i++){
if(a[i].p!=f) {flag=1;f=a[i].p;}
x[a[i].rank]=flag++;
}
// for(int i=0;i<m;i++)
// cout<< a[i].rank<<" "<<a[i].p<<" " <<a[i].y<<endl;
for(int i=0;i<m;i++)
printf("%06d%06d\n",b[i],x[i]);
return 0;
}