3
MISTIA
UP
XIAOSUIGU
SAME
LORELEI
DOWN
LORELEI
XIAOSUIGU
MISTIA
#pragma GCC optimize(2) #include<bits/stdc++.h> #include <math.h> using namespace std; typedef long long ll; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();} return x*f; } const int maxn=5e4+100; const int inf=0x3f3f3f3f; const int mod=1e9+7; struct node{ char name[110]; char p[10]; int flag; }a[maxn]; struct node1{ char v[110]; }t[maxn]; int b[maxn]; int n; void inint(){ cin>>n; for(int i=1;i<=n;i++){ scanf("%s",a[i].name); getchar(); scanf("%s",a[i].p); getchar(); if(a[i].p[0]==‘S‘){ strcpy(t[i].v,a[i].name); a[i].flag=1; } } } int main(){ inint(); int j=1; int p=0;//统计D和U for(int i=1;i<=n;i++){ if(a[i].p[0]==‘D‘){ if(a[j].flag==1){ j++; } strcpy(t[j].v,a[i].name); j++; p++; } } for(int i=1;i<=n;i++){ if(a[i].p[0]==‘U‘){ if(a[j].flag==1){ j++; } strcpy(t[j].v,a[i].name); j++; p++; } } int z; if(p==0){ for(int i=1;i<=n;i++){ printf("%s\n",t[i].v); } } else{ for(int i=1;i<j;i++){ printf("%s\n",t[i].v); } } }
原文:https://www.cnblogs.com/lipu123/p/12839836.html