1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cmath>
5 #include <cstdlib>
6 #include <algorithm>
7 #include <vector>
8 #include <stack>
9 #include <queue>
10 #include <cassert>
11 #include <
set>
12 #include <sstream>
13 #include <map>
14 using namespace std ;
15 #ifdef DeBUG
16 #define bug assert
17 #else
18 #define bug
//
19 #endif
20 #define zero {0}
21 struct shop
22 {
23 string name;
24 int price;
25 };
26 map<
string,
int>
a;
27 map<
string,
int>
::iterator it;
28 int main()
29 {
30 #ifdef DeBUG
31 freopen(
"C:\\Users\\Sky\\Desktop\\1.in",
"r",stdin);
32 #endif
33
34 string m;
35 int price;
36 int n;
37 int t;
38 int d;
39 int sum=
0;
40 int rank=
1;
41 int i,j,k;
42 char mm[
40];
43 while(scanf(
"%d",&n)!=
EOF)
44 {
45 for(i=
0;i<n;i++
)
46 {
47 scanf(
"%s",mm);
48 a[mm]=
0;
49 }
50 scanf(
"%d",&
t);
51 for(i=
0;i<t;i++
)
52 {
53 for(j=
0;j<n;j++
)
54 {
55 scanf(
"%d%s",&
d,mm);
56 a[mm]+=
d;
57 if(strcmp(mm,
"memory")==
0)
58 {
59 sum=
a[mm];
60 }
61 }
62 for(it=a.begin();it!=a.end();it++
)
63 {
64 if(it->second>
sum)
65 rank++
;
66 }
67 printf(
"%d\n",rank);
68 rank=
1;
69 }
70 a.clear();
71 }
72 return 0;
73 }
View Code
一、map的说明 1 头文件 #include <map> 2 定义 map<string, int> my_Map; 或者是typedef map<string, int> MY_MAP; MY_MAP my_Map; 3 插入数据 (1) my_Map["a"] = 1; //a也会插入其中 (2) my_Map.insert(map<string, int>::value_type("b",2)); (3) my_Map.insert(pair<string,int>("c",3)); (4) my_Map.insert(make_pair<string,int>("d",4)); 4 查找数据和修改数据 (1) int i = my_Map["a"]; my_Map["a"] = i; (2) MY_MAP::iterator my_Itr; my_Itr.find("b"); int j = my_Itr->second; my_Itr->second = j; 不过注意,键本身是不能被修改的,除非删除。 5 删除数据 (1) my_Map.erase(my_Itr); (2) my_Map.erase("c"); 还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。 6 迭代数据 for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr) {} 7 其它方法 my_Map.size() 返回元素数目 my_Map.empty() 判断是否为空 my_Map.clear() 清空所有元素
转载于:https://www.cnblogs.com/Skyxj/p/3194314.html
相关资源:数据结构—成绩单生成器