P1159 排行榜
发布时间
阅读量:
阅读量
一、题目

二、解题思路
1.读懂题目以后,会发现题目似乎不难,直接想到,设置三个列表,分别保存UP、DOWN和SAME的歌曲,把UP的数组放在结果的后面,然后把DOWN的结果放在前面。
2.开始以为会有坑,抱着试试的态度提交,结果直接AC
三、代码
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int main(){
int N;
cin>>N;
vector<string> head, rear,same;
vector<int> same_id;
for(int i=0;i<N;i++){
string name, state;
cin>>name>>state;
if(state=="UP")rear.push_back(name);
else if(state=="DOWN")head.push_back(name);
else {
same_id.push_back(i);
same.push_back(name);
}
}
vector<string> ret(N, "");
for(int i=0;i<same_id.size();i++){
ret[same_id[i]]=same[i];
}
int now_id=0;
for(int i=0;i<head.size();i++){
while(ret[now_id].size())
now_id++;
ret[now_id++]=head[i];
}
for(int i=0;i<rear.size();i++){
while(ret[now_id].size())
now_id++;
ret[now_id++]=rear[i];
}
for(int i=0;i<N;i++)
cout<<ret[i]<<endl;
}
全部评论 (0)
还没有任何评论哟~
