#include <string>
#include <math.h>
#include <numeric>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <map>
#include <utility>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
scanf("%d", &n);
vector<pair<int, int> > car(n);
int maxp = 0;
for (int i=0; i<n; ++i) {
cin >> car[i].first >> car[i].second;
car[i].second += car[i].first;
//minp = min( minp, car[i].first );
maxp = max(maxp, car[i].second );
}
vector<int> cover(maxp+100, 0);
for (int i=0 ; i<n; ++i) {
for (int j=car[i].first; j<=car[i].second; ++j) {
cover[j]++;
}
}
//find first index
int maxid = 0, value = cover[0];
for (int i=0 ; i<n; ++i) {
if (cover[i] > value) {
maxid = i;
value = cover[i];
}
//cout << "\nmaxid: " << maxid;
//cout << "\nvalue: " << value;
}
int ret = value;
for (int i=0; i<cover.size(); ++i)
cover[i] = 0;
for (int i=0 ; i<n; ++i) {
for (int j=car[i].first; j<=car[i].second && !( car[i].first <= maxid && car[i].second >= maxid ); ++j) {
cover[j]++;
}
}
sort(cover.begin(), cover.end());
cout << cover[cover.size()-1] + ret;
return 0;
}
发现终版少打了一行,现在补上了,但是现在没法验证对不对~有原题给出吗赛码网的。或是有ac的帮忙看看这样行不行呀