Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>using namespace std;struct block{int s, e, index;block(int a = 0, int b = 0, int c = 0) :s(a), e(b), index(c) {}};block blo[1010];int cnt = 0, cur = 0;void inser(int a, int b){block k(a, b, ++cnt);int i;for (i = 0; i < cur; i++){if (blo[i].s > k.s){while (i > 0 && i < cur&& blo[i].s == blo[i - 1].e + 1)i++;break;}}for (int j = cur - 1; j >= i; j--)blo[j + 1] = blo[j];blo[i] = k;cur++;for (int j = i; j < cur; j++){if (j > 0 && blo[j].s <= blo[j - 1].e){blo[j].e += blo[j - 1].e + 1 - blo[j].s;