2 条题解
-
1
#include <bits/stdc++.h> using namespace std; int n; int a[100001],b[100001],t[100001]; bool cmp(int x,int y){ return x>y; } int main(){ cin>>n; for (int i=1;i<=n;i++){ cin>>a[i]; b[i]=a[i];//将成绩备份到另一个数组中 } sort(b+1,b+n+1,cmp);//排序备份数组 for (int i=1;i<=n;i++){ t[b[i]]=(t[b[i]]?t[b[i]]:i);//计算备份数组中成绩的对应排名 } for (int i=1;i<=n;i++){ cout<<t[a[i]]<<endl; } return 0; }
-
1
#include <bits/stdc++.h>//万能头文件 using namespace std; map <int,int> m; int a[100010]; int main() { int n,i; cin>>n; //求每个数字出现的次数 for(i = 1;i <= n;i++) { cin>>a[i]; //如果x在map中没有出现过 if(m.count(a[i]) == 0) { m[a[i]] = 1; } else { m[a[i]]++; } } int c = 1,t; //修正名次 for(map<int,int>::reverse_iterator j = m.rbegin();j != m.rend();j++) { t = j->second; m[j->first] = c; c = c + t; } //输出结果 for(i = 1;i <= n;i++) { printf("%d\n",m[a[i]]);//输出 } return 0; }//代码已AC
- 1
信息
- ID
- 539
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 69
- 已通过
- 31
- 上传者