求助95#16wa
查看原帖
求助95#16wa
1236674
flowercode楼主2024/8/3 18:17
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
int n ,m ;
vector<int> p;
vector<int> cnt;
vector<int> c;
int main(){
	cin >> n >> m;
	p.resize(n);
	cnt.resize(n);
	c.resize(n);
	int x = 0;
	for(int i = 0; i < n; ++i)cin >> p[i];
	sort(p.begin(),p.end());
	for(int i = 1; i <n ; ++i){
			if(p[i] <= p[i - 1] + m -1){
				cnt[i - 1] = min(m,cnt[i - 1] + p[i - 1] + m -p[i]);
				cnt[i] = min(m,cnt[i] + p[i - 1] + m - p[i]);
				c[i - 1] = cnt[i - 1];
				c[i] = cnt[i];
			}
	}
	for(int i = 0; i < n ; ++ i){
		bool flag = false;
		if(i - 1 >= 0 && i + 1 < n && p[i - 1] + m - 1 >= p[i + 1]){
			c[i] -= p[i - 1] + m - p[i + 1];
			flag =true;
		}
		if(i - 2 >= 0 && p[i - 2] + m - 1 >= p[i]){
			if(flag && p[i - 2] + m - 1 >= p[i + 1])c[i] -= p[i + 1] - p[i]; 
			else c[i] -= p[i - 2] +m - p[i]; 
		}
		if(i + 2 < n && p[i] + m - 1 >= p[i + 2]){
			if(flag && p[i - 1] + m - 1 >= p[i + 2]) c[i] -= p[i] - p[i - 1];
			else c[i] -=p[i] + m - p[i + 2];
		}
	}
	int res = 0 , maxm = 0;
	for(int i = 0; i< n ;++i){
		res += m - cnt[i];
		if(cnt[i] + c[i] > maxm)maxm = cnt[i] + c[i];
	}
	//cout << res << " " << maxm << endl;
	cout << res + maxm ;
	return 0;
}
2024/8/3 18:17
加载中...