codeforces 841C Leha and Function

来源:互联网 发布:差分演化算法及其应用 编辑:程序博客网 时间:2024/05/23 18:53

C. Leha and Function
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Leha like all kinds of strange things. Recently he liked the function F(n, k). Consider all possible k-element subsets of the set [1, 2, ..., n]. For subset find minimal element in it. F(n, k) — mathematical expectation of the minimal element among all k-element subsets.

But only function does not interest him. He wants to do interesting things with it. Mom brought him two arrays A and B, each consists of mintegers. For all i, j such that 1 ≤ i, j ≤ m the condition Ai ≥ Bj holds. Help Leha rearrange the numbers in the array A so that the sum  is maximally possible, where A' is already rearranged array.

Input

First line of input data contains single integer m (1 ≤ m ≤ 2·105) — length of arrays A and B.

Next line contains m integers a1, a2, ..., am (1 ≤ ai ≤ 109) — array A.

Next line contains m integers b1, b2, ..., bm (1 ≤ bi ≤ 109) — array B.

Output

Output m integers a'1, a'2, ..., a'm — array A' which is permutation of the array A.

Examples
input
57 3 5 3 42 1 3 2 3
output
4 7 3 5 3
input
74 6 5 8 8 2 62 1 2 2 1 1 2
output
2 6 4 5 8 8 6

题意:题目一大堆英文,看不懂,但是根据样例可以猜出题意,最小的Bi对应最大的Ai,最大的Bi对应最小的Ai,依此类推

建一个结构体数组,一个保存原数组序列,第二个保存当前数的数值,排序模拟一下就好了


#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<stack>#include<queue>#include<deque>#include<set>#include<map>#include<cmath>#include<vector>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int, int> PII;#define pi acos(-1.0)#define eps 1e-10#define pf printf#define sf scanf#define lson rt<<1,l,m#define rson rt<<1|1,m+1,r#define epp tree[rt]#define _s second#define _f first#define all(x) (x).begin,(x).end#define mem(i,a) memset(i,a,sizeof i)#define for0(i,a) for(int (i)=0;(i)<(a);(i)++)#define for1(i,a) for(int (i)=1;(i)<=(a);(i)++)#define mi ((l+r)>>1)#define sqr(x) ((x)*(x))const int inf=0x3f3f3f3f;const int Max=2e5+5;int a[Max+1],b[Max+1],m,c[Max+1];struct node{    int x,y;}e[Max+1];bool cmp(const node& a,const node& b){    return a.y<b.y;}bool cmp1(int x,int y){    return x>y;}int main(){    while(~sf("%d",&m))    {        for0(i,m)            sf("%d",&a[i]);        for0(i,m)            sf("%d",&e[i].y),e[i].x=i;        sort(a,a+m,cmp1);        sort(e,e+m,cmp);        for0(i,m)            b[e[i].x]=i;//x表示原序列下标,i表示排序后的下标        for0(i,m)            pf(i==m-1?"%d\n":"%d ",a[b[i]]);    }    return 0;}


原创粉丝点击