#include int min = 1000000; int main(){ int N, K, i, j, k, d, new; int *a, *b; a = (int *) malloc(sizeof(int)*10000000); b = (int *) malloc(sizeof(int)*10000000); scanf("%d", &N); // nacita do N pocet test case-ov for (i = 0; i < N; i++){ // hlavny cyklus - pre kazdy test case scanf("%d", &K); // K = vyska mapy (pocet nasledujucich riadkov) for (j = 0; j < K; j++) scanf("%d %d", &a[j], &b[j]); // hladanie minima pre kazdy riadok for (j = 0; j < K; j++){ d = b[j] - a[j]; // 1.) priama sirka rieky na danom riadku // printf("Debug: riadok: %d, cesta: %d\n", j+1, d); for (k = 1; k < d && j+k < K; k++){ // 2.) kym (pocet pripocitanych riadkov < aktualna dlzka) && (nie som na konci pola) if ((new = b[j] - a[j+k] + k) < d) d = new; // ak dlzka pre novy riadok je mensia zapis ju if ((new = b[j+k] - a[j] + k) < d) d = new; // rovnako z opacnej strany brehu // printf("Debug: cesta: %d\n", d); } if (d < min) min = d; } printf("K prechodu reky je treba %d pontonu.\n", min); } return 0; }