提示wrong answer 不知道错在哪,跪求指点

2025年03月01日 12:30
有1个网友回答
网友(1):

#include 
#include 
using namespace std;
const int maxn = 10000 + 10;
class Road {
public:
int a, b;
bool operator<(const Road& another) const {
if (a < another.a) return true;
if (a == another.b && b < another.b) return true;
return false;
}
};

Road road[maxn];

int main()
{
int L, m, i;
cin >> L >> m;
int sum;
//while (cin >> L >> m && (L >= 0 && L <= 10000) && (m >= 0 && m <= 100)
for (int i = 0; i < m; i++)
cin >> road[i].a >> road[i].b;
sort(road, road + m);
sum = 0;
int l = road[0].a, r=road[0].b;
for (i = 1; i <= m; i++) {
if (i == m || road[i].a > r) {
sum += r - l + 1;
if (i < m) {
l = road[i].a;
r = road[i].b;
}
}
else {
r = max(r, road[i].b);
}
}
cout << L + 1 - sum << endl;
return 0;
}