80分,是不是错在数组范围了,改成50005就报错
查看原帖
80分,是不是错在数组范围了,改成50005就报错
549907
Aheaddd楼主2021/8/30 22:57
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<stdio.h>
using namespace std;

int n, m, d, l, s[50005], g, ans, p[10000][10000], x=1;

int main()
{
	cin >> n >> m >> d >> l;
	ans = n;
	for (int i = 1; i <= n; i++)
	{
		cin >> s[i];
	}
	sort(s + 1, s + 1 + n);
	int h;
	if (n%m == 0)h = n / m;
	else h = n / m + 1;
	for (int i = 1; i <= h; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			p[i][j] = s[x++];
			if (x == n)break;

		}
	}
	for (int i = 1; i <= m; i++)
	{
		g = 0;
		for (int j = 1; j <= h; j++)
		{
			if (p[j][i] == 0)break;
			p[j][i] -= d * (j - 1 - g);
			if (p[j][i] < l)
			{
				ans--; g++;
			}
		}
	}
	cout << ans;

	return 0;
}
2021/8/30 22:57
加载中...