题目
题解
这个题的意思是每输入完一次考试,算上之前的成绩排名。坑了我一发。
正好复习一下迭代器的用法。
vector<>
之类的iterator
直接*it
就可以访问元素;
map<>
由于有两个类型,因此要使用it->first
或it->second
访问元素;
迭代器是属于某个STL类型的因此是map<string, int>::iterator
;
对象名.begin()
和对象名.end()
。
代码
#include<bits/stdc++.h>
using namespace std;
int n, m, DaDagrade, grade, g[105];
string name;
map<string, int> sum;
int main()
{
cin>>n;
for(int i = 1;i <= n;i ++) cin>>name;
cin>>m;
while(m--) {
memset(g, 0,sizeof g);
int ans = 0;
for(int i = 1;i <= n;i ++) {
cin>>grade>>name;
sum[name] += grade;
if(name == "DaDa") DaDagrade += grade;
}
for(map<string,int>::iterator it = sum.begin();it != sum.end();it ++)
if((it->second) > DaDagrade) ans ++;
cout<<ans+1<<endl;
}
}