P1159 20pts求助
  • 板块P1159 排行榜
  • 楼主RTX7070Ti
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/2/21 21:49
  • 上次更新2023/10/24 00:08:26
查看原帖
P1159 20pts求助
731239
RTX7070Ti楼主2023/2/21 21:49

如题,样例过了,3-10点WA

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int n;
string ans[105];
struct node{
    int start, end;
    string name, fac;
}arr[105];
bool cmp(node a, node b){
    if (a.start == b.start) return a.end < b.end;
    else return a.start < b.start;
}
int main(){
    cin >> n;
    for (int i = 1; i <= n; i++){
        cin >> arr[i].name >> arr[i].fac;
        if (arr[i].fac == "UP"){
            arr[i].start = i + 1;
            arr[i].end = n;
        }else if (arr[i].fac == "DOWN"){
            arr[i].start = 1;
            arr[i].end = i - 1;
        }else{
            arr[i].start = i;
            arr[i].end = i;
        }
    }
    
    sort(arr + 1, arr + n + 1, cmp);
    
    for (int i = 1; i <= n; i++){
        ans[i] = "";
    }
    
    for (int i = 1; i <= n; i++){
        if (arr[i].start == arr[i].end && ans[i] == ""){
            ans[i] = arr[i].name;
        }else if (arr[i].end == i && ans[i] == ""){
            ans[i] = arr[i].name;
        }else if (arr[i].start <= i && arr[i].end >= i && ans[i] == ""){
            ans[i] = arr[i].name;
        }
    }
    
    for (int i = 1; i <= n; i++){
        cout << ans[i] << endl;
    }
    
    return 0;
}

2023/2/21 21:49
加载中...