原题地址
主要是记录一下关于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
****************************************************/