#include #include #include #include #include #include #include static const int r_size = 1000002; int main(){ int N; std::scanf("%d", &N); for (int n = 0; n < N; ++n){ std::vector river_l(r_size, std::numeric_limits::max()); std::vector river_r(r_size, std::numeric_limits::max()); int height; int min_r = std::numeric_limits::max(); int min_l = std::numeric_limits::max(); int optimum = std::numeric_limits::max(); std::scanf("%d", &height); for (int h = 0; h < height; ++h){ int left, right, i; std::scanf("%d %d", &left, &right); if (h == 0) { min_r = right; min_l = left; } // Ooops for (i=left; i=min_r; --i) { river_r[i] = 1; } river_r[right-1] = 1; for (i=std::min(right-2, min_r-1); i>=left; --i) { river_r[i] = std::min(river_r[i+1], river_r[i]) + 1; if (i == min_l-1) { if (river_r[i] < optimum) { optimum = river_r[i]; } } } if (river_r[left] < optimum) { optimum = river_r[left]; } for (; i>=min_l; --i) { if (river_r[i] < optimum) { optimum = river_r[i]; } } min_l = left; min_r = right; } printf("K prechodu reky je treba %d pontonu.\n", optimum); } return 0; }