编都过不了……
  • 板块灌水区
  • 楼主xuweichi
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/10/11 15:19
  • 上次更新2023/11/2 14:30:09
查看原帖
编都过不了……
838482
xuweichi楼主2023/10/11 15:19

代码

#include <bits/stdc++.h>
#define int long long
#define mid ((l + r) >> 1)
using namespace std;
int n, d, k, h, t, f[500005], x[500005], s[500005], q[500005];
pair<int, int> now[500005];
void ins(pair<int, int> u)
{
	while (h < t && now[t - 1] < u)
	{
		t --;
	}
	now[t ++] = u;
}
void era(pair<int, int> u)
{
	if (h < t && now[h] == u) h ++;
}
int mxi()
{
	if (h >= t) return (-1ll << 60);
	return now[h].first;
}
bool fuc(int maxx, int minx, int limit)
{
	int p = 0, q = 0;
	h = t = 0;
	f[0] = 0ll;
	for (int i = 1; i <= n; i ++)
	{
		while (x[i] - x[q] >= minx)
		{
			ins(make_pair(f[q], q));
			q ++;
		}
		while (x[i] - x[p] >= maxx)
		{
			ins(make_pair(f[p], p));
			p ++;
		}
		f[i] = mxi() + s[i];
		if (f[i] >= limit) return 1;
	}
	return 0;
}
signed main()
{
	cin >> n >> d >> k;
	for (int i = 1; i <= n; i ++)
	{
		cin >> x[i] >> s[i];
	}
	int l = 0, r = 1000000007;
	while (l < r)
	{
		if (fuc(max(int(d - mid), 1), d + mid, k)) r = mid;
		else l = mid + 1;
	}
	if (r == 1000000007) cout << -1;
	else cout << r;
	return 0;
}

这个代码编都过不了

编译信息

行      列                 描述
0	-1	In function 'int main()':
2	13	[错误] expected primary-expression before 'long'
56	15	[说明] in expansion of macro 'int'
2023/10/11 15:19
加载中...