题目链接:点击打开链接
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
char st[20];
int h;
int l;
}num[3010];
bool cmp(node a,node b)
{
return a.h<b.h;
}
int main()
{
int n,i,j,ans;
while(~scanf("%d",&n))
{
ans=0;
for(i=0;i<n;i++)
scanf("%s%d",num[i].st,&num[i].h);
sort(num,num+n,cmp);
for(i=0;i<n;i++)
{
if(num[i].h>i)
{
ans=1;
break;
}
num[i].l=i-num[i].h+1;
for(j=0;j<i;j++)
if(num[j].l>=num[i].l)
num[j].l++;
}
if(ans)
printf("-1\n");
else
for(i=0;i<n;i++)
printf("%s %d\n",num[i].st,num[i].l);
}
return 0;
}