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;
    }
    
    
  • 相关阅读:
    访问修饰符
    SqlServer 查运行进程
    SqlServer 作业计时执行存储过程,杀超时进程
    VS快捷键操作
    sql server 命令
    vs 加载 dev控件
    TreeList显示[+] [-] 线条样式
    佳能MG2580S清零
    Dev WaitDialog 使用
    导出.txt / .pdf / .xls
  • 原文地址:https://www.cnblogs.com/asuldb/p/11478428.html
Copyright © 2011-2022 走看看