蓝桥杯月赛--灯笼猜谜

算法双周赛

#include

#include

#include using namespace std;

int main() {

int N, M;

cin >> N >> M;

vector> intervals(N);

for (int i = 0; i < N; ++i) { cin >> intervals[i].first >> intervals[i].second; }

// 初始化 int left = 1, right = 1; long long fatigue = 0; for (int i = 0; i < N; ++i) { int L = intervals[i].first; int R = intervals[i].second; // 当前区间与前一个区间的交集 int new_left = max(left, L); int new_right = min(right, R); if (new_left > new_right) { // 没有交集,选择最近的端点 if (right < L) { fatigue += L - right; left = L; right = L; } else { fatigue += left - R; left = R; right = R; } } else { // 有交集,更新范围 left = new_left; right = new_right; } } cout << fatigue << endl; return 0; }

你可能感兴趣的:(蓝桥杯,职场和发展)