Codeforces Round #346 (Div. 2) B (pair+vector的应用)

来源:互联网 发布:部落冲突 法师升级数据 编辑:程序博客网 时间:2024/06/03 20:07


http://codeforces.com/contest/659/problem/B


题意:每个区域中有一些人,这些人有人名和对应的分数,如果能够确定每个区域中分数前两名,就把这两个人的名字输出,如果不能确定,就输出问号。


vector相当于一个不知道下标要开多少大的数组,而且数组中可以存放更多类型的东西。


#include<bits/stdc++.h> //包含了所有的头文件#define MAXN 100005using namespace std; //不包括在头文件中int n, m, region, score;string name;vector<pair<int, string> >s[MAXN];bool cmp(pair<int,string> A,pair<int,string> B){    return A.first>B.first;}int main(){    scanf("%d%d", &n, &m);    for (int i = 0; i < n; i++)    {        cin >> name >> region >> score;        s[region].push_back(make_pair(score, name));    }    for (int i = 1; i <= m; i++)    {        sort(s[i].begin(), s[i].end(), cmp);    }    for (int i = 1; i <= m; i++)    {        if (s[i].size() == 2)            cout << s[i][0].second << ' ' << s[i][1].second << endl;        else        {            if (s[i][1].first == s[i][2].first) cout << '?' << endl;            else                cout << s[i][0].second << ' ' << s[i][1].second << endl;        }    }    return 0;}




0 0