• [无聊测试赛] T6 排行榜


    简单的排序题.遍历第一遍时将UP放入queue,same直接放,Down建指针放在第一个可以使用的位置.第二遍将UP放入就可

    这里我使用的struct记录每个点的位置和状态

    #include <iostream>
    #include <algorithm>
    #include <queue>
    using namespace std;
    struct Edge{
      string type;
      int num;
    }edge[105];
    string last[105];
    queue<string> q;
    int n;
    int main(){
      cin >> n;
      for (int i=0;i<n;i++) last[i] = "?";//开始不知道
      //1表示UP,-1表示DOWN,'S'表示SAME
      for (int i=0;i<n;i++){
        string a,b; cin >> a >> b;
        if (b[0]=='U') edge[i] = (Edge){a,1};
        else if (b[0]=='D') edge[i] = (Edge){a,-1};
        else if (b[0]=='S') edge[i] = (Edge){a,0};
      }
      int ptr = 0;//指针指第一个没有使用的位置
      for (int i=0;i<n;i++){
        if (edge[i].num==0) last[i] = edge[i].type;//如果是SAME直接放
        else if (edge[i].num==1)q.push(edge[i].type);//UP放进队列
        else{//DOWN用指针放
          while(last[ptr]!="?") ptr++;
          last[ptr] = edge[i].type;
          ptr++;
        }
      }
      for (int i=0;i<n;i++){
        if (last[i]=="?") last[i] = q.front(),q.pop();
      }//第二遍放UP
      for (int i=0;i<n;i++) cout << last[i] << endl;//输出答案就行了
    }
    
  • 相关阅读:
    ちょっとした難しい言葉まとめ②
    objective -c 知識点
    Viewing the Raw SQL Statement(xcode で)
    ちょっとした難しい言葉まとめ③
    ちょっとした難しい言葉まとめ④
    7.25 8figting!
    7.25 7figting!
    7.25 6figting!
    7.25 5
    7.25 4
  • 原文地址:https://www.cnblogs.com/DannyXu/p/12536353.html
Copyright © 2020-2023  润新知