ABC338 D题WA求助
查看原帖
ABC338 D题WA求助
487885
C某某是个人楼主2024/1/27 22:02
#include <algorithm>
#include <cstdio>
#include <cmath>
#define int long long
using namespace std;

const int N = 2e5+10;
int n, m, ls[N], sz[2][N], cge[N], b[N], mn1 = 1e18l, ans = 0;

signed main()
{
	scanf("%lld %lld", &n, &m);
	for(int i = 1; i <= m; i++) scanf("%lld", &ls[i]);
	for(int i = 1; i < m; i++)
	{
		sz[0][i] = abs(ls[i] - ls[i+1]);
		sz[1][i] = n - sz[0][i];
		cge[i] = abs(sz[0][i] - sz[1][i]);
	}
	for(int i = 1; i < m; i++)
	{
		int mn = min(ls[i], ls[i+1]), mx = max(ls[i], ls[i+1]);
		ans += min(sz[0][i], sz[1][i]);
		if(sz[0][i] > sz[1][i])
		{
			b[1] += cge[i];
			b[mn] -= cge[i];
			b[mx] += cge[i];
		}
		else
		{
			b[mn] += cge[i];
			b[mx] -= cge[i];
		}
	}
	for(int i = 1; i <= m; i++)
	{
		b[i] += b[i-1];
		mn1 = min(mn1, b[i]);
	}
	printf("%lld\n", ans + mn1);
	return 0;
}

2024/1/27 22:02
加载中...