NC25194. 苹果项链
描述
大美门口那棵树上的苹果有两种颜色:金和银。金苹果的数量是 n,每个
苹果都有它的 id(id 从 1 到 n)和不同的重量(g[i])。银苹果的数量是 n,每个苹果都有它的 id(id 从 1 到 n)和不同的重量(s[i])。现在你需要用这些苹果来串一条项链。第一个要求是项链的颜色必须是金银相间的(意思是一个金苹果接一个银苹果,一个银苹果接一个金苹果,一个接一个…)。第二个要求是项链中的所有金苹果的重量应该按降序排列,银苹果也是降序。你能告诉我这条项链的 id 吗?这条项链的 id 是构成这条项链的金苹果和银苹果的 id 组合。
而且,第一个一定是金苹果。输入描述
第一行一个整数T(T <=
50),表示数据组数。
在每组输入数据中,第一行有一个正整数,n(n
<= 1000)。
第二行中有n个正整数g[i](g[i] <= 1000),是n个金苹果的重量。第三行中有n个正整数s[i](s[i] <= 1000),是n个银苹果的重量。
输出描述
对于每组数据,输出项链的id,每两个数中间有一个空格。
示例1
输入:
2 4 1 2 3 4 2 5 1 3 5 2 5 3 4 1 1 2 3 4 5
输出:
4 2 3 4 2 1 1 3 2 5 4 4 3 3 1 2 5 1
说明:
对于第一个样例,金苹果选最大重量的(第四个)放在项链的第一个位置,银苹Python3(3.5.2) 解法, 执行用时: 97ms, 内存消耗: 4336K, 提交时间: 2019-04-21 12:31:49
T=int(input()) for t in range(T): n=int(input()) A=list(map(int,input().strip().split())) B=list(map(int,input().strip().split())) C=D=list(map(int,list(range(n)))) C=sorted(C,key=lambda x:A[x],reverse=True) D=sorted(D,key=lambda x:B[x],reverse=True) for i in range(n): print(C[i]+1,D[i]+1,end=' ') print()
C++11(clang++ 3.9) 解法, 执行用时: 21ms, 内存消耗: 480K, 提交时间: 2019-04-21 12:48:49
#include<bits/stdc++.h> using namespace std; int k,i,n,T; struct NODE { int a,b; bool operator<(NODE A) {return a>A.a;} NODE() {cin>>a,b=++k;} }; int main() { cin>>T; while(T--) { cin>>n; k=0; NODE g[n]; k=0; NODE s[n]; for(sort(g,g+n),sort(s,s+n),i=0;i<n;i++) cout<<g[i].b<<" "<<s[i].b<<" "; puts(""); } return 0; }