求助
  • 板块灌水区
  • 楼主sto_fwz_orz
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/11/22 13:39
  • 上次更新2023/11/22 17:08:01
查看原帖
求助
352296
sto_fwz_orz楼主2023/11/22 13:39

题目: 排队(line) 时限:1s 空间:256m 楠楠最近在研究南海区 5 年级英语成绩的排序有关算法,如果数列中的数是 从小到大排列的,则称有序的。研究中对于没有排好序的数列,要统计每个数前 面有多少比它大的数字。比如有 5 个数的数列: 3 1 4 2 5,则第 1 个数 3 之前有 0 个数比它大;第 2 个数 1 之前有 1 个数比它大;第 3 个数 4 之前有 0 个数比它大;第 4 个数 2 之前有 2 个数比它大;第 5 个数 5 之前有 0 个数比它大。 由于数列很长,楠楠求你编程来统计。 输入格式:
第一行 1 个整数 N,表示数列有 N 个整数。 第二行有 N 个非负整数,每个数表示一个分数,范围是[0…120]。 输出格式:
一行 N 个非负整数(中间有空格),第 i 个数表示原数列中第 i 位前有多少比第 i 位数大。 输入样例: 5 3 1 4 2 5 输出样例:
0 1 0 2 0 数据范围:
8 个的数据: N 的范围是[1…1000],每个数范围是[0…120] 2 个的数据:N 的范围是[1…1,00,000],每个数范围是[0…120]

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[114514],b[114514],fuck;
int main(){
	cin>>n>>a[1];
	cout<<0<<" "; 
	for(int i=2;i<=n;i++)
	{
		cin>>a[i];
		sort(a+1,a+1+i);
		b[i]=upper_bound(a,a+i,a[i])-a;
		cout<<b[i]<<" ";
	}
    return 0;
}

问题: 输入样例: 5 3 1 4 2 5 输出样例:
0 1 0 2 0 我的输出: 0 2 3 4 5、

2023/11/22 13:39
加载中...