Advertisement

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)

还没有任何评论哟~