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 ininput 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
2 3
1 32
2 63
1 12
Sample Output 1
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
2 3
2 55
2 77
2 99
Sample Output 2
000002000001
000002000002
000002000003
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct temp
{
int rank;
int p;
int y;
}a[100005];
int cmp(temp x, temp y)
{
if(x.p != y.p)
return x.p<y.p;
else
return x.y<y.y;
}
int main()
{
int n,m;
while(cin >> n >> m)
{
int b[100005];
for(int i = 0; i< m; i++)
{
a[i].rank = i;
cin >> 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++)
printf("%06d%06d\n",b[i],x[i]);
}
return 0;
}
Thank for yot like!