HDU 2648 shopping map排序

题目链接

题目就是找memory这个超市排在第几位,输出排位就行。

题比较简单,做法很多,主要是学一下map的排序。

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<map>
#include<vector>
using namespace std;

typedef pair<string,int> PSI;

const int N=10010;

int n,m;

//根据第 value 排序  
bool cmp(const PSI &a,const PSI &b)
{
	if(a.second!=b.second) return a.second>b.second;
	else return a.first=="memory";//保证价格相同的时候memory在同价格的最前面
}
 
int main()
{
	while(cin>>n)
	{
		string s;
		map<string,int>mp;
		
		for(int i=1;i<=n;i++)
		{
			cin>>s;
			mp[s]=0;
		}
		
		cin>>m;
		
		for(int i=1;i<=m;i++)
		{
			int x;
			
			for(int j=1;j<=n;j++)
			{
				cin>>x>>s;
				mp[s]+=x;
			}
			//把map放在vector中
			vector<PSI> ver(mp.begin(),mp.end());
			sort(ver.begin(),ver.end(),cmp);
			
			int l=ver.size();
		
			for(int j=0;j<l;j++)
			{
				if(ver[j].first=="memory")
				{
					printf("%d\n",j+1);
					break;
				}
			}
		}
	}
	
	
	
	return 0;
}
发布了43 篇原创文章 · 获赞 1 · 访问量 1584

猜你喜欢

转载自blog.csdn.net/DaNIelLAk/article/details/104359829