2057金牌、银牌、铜牌

原题地址
主要是记录一下关于vector的一些用法。

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <iomanip>
//#include <string.h>
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
/*struct shi
{
    int x;
    int T;
} s[100000];
int cmp(shi a,shi b)
{
    return a.x<b.x;
}
long long cmd(long long a, long long  b)
{
    return a > b;
}*/
int m , n,sum=0,k;
/*typedef*/ struct node {
    string name;
    int score;
    //struct node *next;

}student[1000000];
/*student * creatlist(int b){
    student *head = new student;
    student *pre = head;
    for(int i=1;i<=b;i++){
        student *p = new student ;
        p->num = i;
        pre->next = p;
        pre = p;
        p->next = NULL;
    }
    pre->next = head->next;//quan
    return head;

};*/
/*void kill(struct node *head){
    student *p ;
    p = head->next;
    do{
        for(int i=1;i<=4;i++){
            head = head->next;
            //sum++;
        }
            //return;
        p=head->next;
        head->next = head->next->next;
       // p=head;
        sum++;
        //cout<<p->num;
    }while(p->num!=1);
    //cout<<p->num<<endl;
    cout<<sum<<endl;
}*/
int main()
{
    cin >>m;
    vector<node>res;
    string name;int score;
    for( int i=1;i<=m;i++){
       cin>>name>>score;
       res.push_back({name,score});
    }
    char c;
    while(cin>>c)
    {
        if(c=='O')break;
        if(c=='A'){
            cin>>name>>score;
            res.push_back({name,score});
        }else if(c=='Q'){

            cin>>name;
            for(auto it = res.begin();it!=res.end();it++)
            {
                if(it->name==name)
                {
                    res.erase(it);
                    break;
                }
            }
        }else if(c=='S'){

            stable_sort(res.begin(),res.end(),[](node a,node b){
                 return a.score>b.score;
                });

            for(auto &x :res){
                cout<<x.name<<" "<<x.score<<endl;
            }
        }else if(c=='C'){
            cin>>name>>score;
            for(auto &x :res)
            {
                if(x.name==name){
                    x.score+=score;
                }
            }

        }
    }
    stable_sort(res.begin(),res.end(),[](node a,node b){
                 return a.score>b.score;
                });
            //for()
    int num=1;
    int p=0;
    int k=6;
    cout<<"#"<<num<<" : ";
   for(int i=p;i<=res.size();i++){
        if(k==5)
            break;
        if(res[i].score==res[i+1].score)
        {
            if(res[i+1].score!=res[i+2].score&&i+2<=res.size())
            {
                k--;

            }
            cout<<res[i].name<<" "<<res[i+1].name; p =i+1;
            i = i+2;

        }
        else if(res[i].score!=res[i+1].score)
        {
            k--;
            cout<<res[i].name;
            p = i;
        }
        if(k!=5)
            cout<<" ";
   }
   cout<<endl;
   num++;
   cout<<"#"<<num<<" : ";
    for(int i=p+1;i<=res.size();i++){
        if(k==3)
            break;
        if(res[i].score==res[i+1].score)
        {
            if(res[i+1].score!=res[i+2].score&&i+2<=res.size())
            {
                k--;
            }
            cout<<res[i].name<<" "<<res[i+1].name;
            p=i+1;
            i = i+2;

        }
        else if(res[i].score!=res[i+1].score)
        {
            k--;
            cout<<res[i].name;
            p = i;
        }
        if(k!=3)
            cout<<" ";
   }
   cout<<endl;
    num++;
    cout<<"#"<<num<<" : ";
    for(int i=p+1;i<=res.size();i++){
        if(k==0)
            break;
        if(res[i].score==res[i+1].score)
        {
            if(res[i+1].score!=res[i+2].score&&i+2<=res.size())
            {
                k--;
            }
            cout<<res[i].name<<" "<<res[i+1].name;
            i = i+2;
        }
        else if(res[i].score!=res[i+1].score)
        {
            k--;
            cout<<res[i].name;
            p = i;
        }
        if(k!=0)
        cout<<" ";
   }cout<<endl;

    return 0;

}



/***************************************************
User name: gpytql
Result: Accepted
Take time: 12ms
Take Memory: 15848KB
Submit time: 2019-08-08 21:43:49
****************************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值