codeforces #429(div2)C—Leha and Function(水题)

来源:互联网 发布:淘宝卖家手机号采集器 编辑:程序博客网 时间:2024/06/05 00:20

题目链接:http://codeforces.com/contest/841/problem/C

    CF终于上分了,0.0

题意:(题目读了半天Orz)就是把第一个数列重新排序,使得第一个数列最大数对应第二个数列的最小数,再次大对次小。。。依次对应

思路:用一个结构体存第二个数列位置和值就行了,把第一个数列大到小排序,第二个数列小到大排序,然后对应就行了


代码:

#include <cstdio>#include <cmath>#include <iostream>#include <cstring>#include <algorithm>#include <queue>#include <stack>#include <vector>#include <map>#include <numeric>#include <set>#include <string>#include <cctype>#include <sstream>#define INF 0x3f3f3f3fusing namespace std;typedef long long LL;typedef pair<int, int> P;const int maxn = 2e5 + 5;int m;int a[maxn],c[maxn];struct node{    int pos,num;}b[maxn];bool cmp1(node a,node b){return a.num<b.num;}bool cmp2(int a,int b) {return a>b;}int main () {    //freopen ("in.txt", "r", stdin);    while (~scanf ("%d",&m)){        for (int i=0;i<m;i++) scanf ("%d",&a[i]);        for (int i=0;i<m;i++) {scanf ("%d",&b[i].num);b[i].pos=i;}        sort(a,a+m,cmp2);        sort(b,b+m,cmp1);        for (int i=0;i<m;i++){            c[b[i].pos]=a[i];        }        for (int i=0;i<m;i++){            printf ("%d ",c[i]);        }        printf ("\n");    }    return 0;}


原创粉丝点击