拼多多3.12笔试第四题

最后一道题a了一半多,有大佬帮忙看看哪里不对吗?

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main()
{
	int a = 1.7;
	int N;
	cin >> N;
	vector<int>data(N, 0);
	vector<int>average(N, 0);
	vector<int>middle(N, 0);
	long long result;
	for (int i = 0; i < N; i++)
	{
		cin >> data[i];
		if (i == 0)
		{
			result = data[i];
			average[i] = data[i];
			middle[i] = data[i];
		}
		else
		{
			result += data[i];
			average[i] = (int) (0.5 + result / ((float) i + 1));
			if (i % 2 == 0)
			{
				sort(data.begin(), data.begin() + i + 1);
				middle[i] = data[i / 2];
			}
			else
			{
				sort(data.begin(), data.begin() + i + 1);
				float aw = float (data[(i + 1) / 2] + data[(i - 1) / 2]) / 2;
				middle[i] = (int)(0.5 + aw);
			}
		}

	}
	for (int i = 0; i < N; i++)
	{
		cout << average[i] << " ";
	}
	cout << endl;
	for (int i = 0; i < N; i++)
	{
		cout << middle[i] << " ";
	}
	cout << endl;
	return 0;
}

全部评论
二分插入维护一个有序数组就能过
3 回复 分享
发布于 2023-03-12 21:29 山东
超时了吧可能,每次都排序 我是用最大最小堆算的中位数
点赞 回复 分享
发布于 2023-03-13 09:02 浙江
sort排序太费时间了吧,用两个堆做中位数时间会少很多
点赞 回复 分享
发布于 2023-03-12 23:58 上海
复杂度的问题吗?双堆能AC
点赞 回复 分享
发布于 2023-03-12 22:27 湖北
我用双堆做的 也是只有47%
点赞 回复 分享
发布于 2023-03-12 21:23 陕西

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务