1167:数组排序

#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;

typedef struct  
{
	int data;
	int pos;
	int cur;
}Num;
 Num num[10001];
 int cmp(Num a,Num b)
 {
	 return a.data<b.data;
 }
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF&&n)
	{
		int i;
		for(i=0;i<n;++i)
		{
			scanf("%d",&num[i].data);
			num[i].pos=i+1;
		}
		sort(num,num+n,cmp);
		
		num[0].cur=1;
		for(i=1;i<n;++i)
		{
			if(num[i].data==num[i-1].data)
				num[i].cur=num[i-1].cur;
			else
				num[i].cur=num[i-1].cur+1;
		}
		
		int j;
		for(i=1;i<=n;++i)
		{
			for(j=0;j<n;++j)
			{
				if(num[j].pos==i)
				{
					cout<<num[j].cur;
					if(i==n)
						cout<<endl;
					else
						cout<<' ';
				}
			}
		}
	}
	return 0;
}

 

posted @ 2012-04-13 16:16  dupuleng  阅读(99)  评论(0)    收藏  举报