제출 #6908

#제출 시각아이디문제언어결과실행 시간메모리
6908cki86201막대기 (KOI13_game)C++98
100 / 100
120 ms8196 KiB
#include<stdio.h>
#include<algorithm>
#include<map>
using namespace std;

typedef long long ll;
#define X first
#define Y second
typedef pair<int,int> Pi;
ll ans;
Pi stick[100010];
int n, L;
map <int, ll> M;

inline int get(Pi &a){return abs(a.X - a.Y) + L;}

int main(){
	scanf("%d%d",&n,&L);
	int i;
	for(i=0;i<n;i++)scanf("%d%d",&stick[i].X,&stick[i].Y);
	sort(stick, stick+n);
	ll now = 0;
	for(i=0;i<n;i++){
		if(i == 0 || stick[i].X != stick[i-1].X){
			ans = max(ans, now);
			now = 0;
		}
		ll tmp = now + get(stick[i]), mp = M[stick[i].Y];
		now = max(now, mp + get(stick[i]));
		ans = max(ans, M[stick[i].Y] = max(mp, tmp));
	}
	printf("%lld",max(ans,now));
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...