社区讨论

本地过,但是WA on #8

P12302 [ICPC 2023 WF] Jet Lag参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhjshnbr
此快照首次捕获于
2025/11/04 07:46
4 个月前
此快照最后确认于
2025/11/04 07:46
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e6 + 10;
int n, s[N], t[N], pre[N], x[N], y[N], ls;
template <typename T> inline void read(T &x)
{
	bool f = 0; x = 0; char ch = getchar();
	while (ch < '0' || ch > '9') { if (ch == '-') f = !f; ch = getchar(); }
	while ('0' <= ch && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }
	x = f ? -x : x;
} 
void prt(int x)
{
	if (x < 0) putchar('-'), x = -x; 
	if (x > 9) prt(x / 10);
	putchar(x % 10 + '0');
}
signed main()
{
	//freopen("P12302_8.in", "r", stdin);
	//freopen("P12302_8.out", "w", stdout);
	read(n);
	for (int i = 1; i <= n; i ++)
	{
		read(s[i]); read(t[i]);
	}
	int fg = s[1] * 3, now = 0;
	for (int i = 1; i <= n; i ++)
	{
		if (t[i] > fg)
		{
			puts("impossible");
			return 0;
		}
		pre[i] = now;
		int tt = t[i] + (s[i + 1] - t[i]) * 3;
		if (tt > fg)
		{
			fg = tt;
			now = i;
		}
	}
	now = n;
	while (now)
	{
		ls ++;
		x[ls] = t[pre[now]];
		y[ls] = s[pre[now] + 1] - 1;
		int p = x[ls] + (y[ls] - x[ls]) * 3 - t[now];
		y[ls] -= p / 3;
		now = pre[now];
	}
	prt(ls); putchar('\n');
	for (int i = ls; i >= 1; i --)
	{
		prt(x[i]); putchar(' '); prt(y[i]); putchar('\n');
	}
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...