团体程序设计天梯赛-练习集 L1-030 一帮一
L1-030 一帮一 - 团体程序设计天梯赛-练习集
可以用顺序表将前n/2名同学存起来进行顺序模拟分配最低分异性。
用两个栈存后面n/2名同学,女放栈1,男放栈2,这样每次给前面同学分配时方便找到当前最后一名的异性
ac code:
#include<bits/stdc++.h>
using namespace std;int main(){int n;cin>>n;vector<pair<int,string>>arr(n/2+1);stack<string>s1,s2;for(int i = 1;i<=n/2;++i){ //将前n/2名同学存起来int a;cin>>a;string s;cin>>s;arr[i] = {a,s};}for(int i = 1;i<=n/2;++i){ //后n/2名同学存到栈中,保证读取的异性都是最低分int a;string s;cin>>a>>s;if(a==0)s1.push(s);else s2.push(s);}for(int i = 1;i<=n/2;++i){auto[x,y] = arr[i];cout<<y<<' ';if(x==0){cout<<s2.top()<<endl;s2.pop(); //分配异性同学}else{cout<<s1.top()<<endl;s1.pop();}}}