zoukankan      html  css  js  c++  java
  • uoj278 【UTR #2】题目排列顺序

    题目

    读进来(f)之后,把权值作为第一关键字从小到大排序,位置作为第二关键字从大到小排序,这样排序后的第(i)个位对应的位置就应该填数字(i)

    权值作为第一关键字,保证了出现在其之前的数权值必它小的填的数也比它小,权值必它大的填的数也比它大;权值相同时按照位置从大到小排序,这样权值相同的一组就是递减的,就不会相互影响了

    代码

    #include<bits/stdc++.h>
    #define re register
    inline int read() {
    	char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
    	while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
    }
    const int maxn=1e5+5;
    int n,b[maxn];
    struct N{int v,p;}a[maxn];
    inline int cmp(N A,N B) {return A.v==B.v?A.p>B.p:A.v<B.v;}
    int main() {
    	n=read();
    	for(re int i=1;i<=n;i++) a[i].v=read(),a[i].p=i;
    	std::sort(a+1,a+n+1,cmp);
    	for(re int i=1;i<=n;i++) b[a[i].p]=i;
    	for(re int i=1;i<=n;++i) printf("%d ",b[i]);puts("");
    	return 0;
    }
    
    
  • 相关阅读:
    唐寅 《桃花庵歌》
    asp.net 后台隐藏div
    dataset的用法
    C#中的DateTime类型加减
    discuz! x2.5 文章添加分享按钮
    asp.net学习小网站
    table固定行和表头
    aspx.net开源的画图组件
    Global.asax详解
    int.Parse() int.TryParse
  • 原文地址:https://www.cnblogs.com/asuldb/p/11478428.html
Copyright © 2011-2022 走看看