#include #include using namespace std; int main() { int pocet; cin >> pocet; for(int z = 0; z < pocet; z++) { int vyska; cin >> vyska; int *levy = new int[vyska]; int *pravy = new int[vyska]; int maxL = 0; int minP = 999999; int pocetKroku = 0; int vysledek = 999999; for(int i = 0; i < vyska; i++) { cin >> levy[i]; cin >> pravy[i]; if(levy[i] > maxL) maxL = levy[i]; if(pravy[i] < minP) minP = pravy[i]; } bool neDotykaji = true; while(neDotykaji) { for(int i = 0; i < vyska; i++) { if(levy[i] == maxL) { if(pravy[i] == levy[i]) { if(pocetKroku < vysledek) vysledek = pocetKroku; neDotykaji = false; } for(int j = i + 1; j < vyska; j++) { if(levy[i] == pravy[j]) { if(pocetKroku + (j - i) < vysledek) vysledek = pocetKroku + (j - i); } } for(int j = i - 1; j >= 0; j--) { if(levy[i] == pravy[j]) { if(pocetKroku + (i - j) < vysledek) vysledek = pocetKroku + (i - j); } } } if(pravy[i] == minP) { if(pravy[i] == levy[i]) { if(pocetKroku < vysledek) vysledek = pocetKroku; neDotykaji = false; } for(int j = i + 1; j < vyska; j++) { if(levy[j] == pravy[i]) { if(pocetKroku + (j - i) < vysledek) vysledek = pocetKroku + (j - i); } } for(int j = i - 1; j >= 0; j--) { if(levy[j] == pravy[i]) { if(pocetKroku + (i - j) < vysledek) vysledek = pocetKroku + (i - j); } } } } for(int i = 0; i < vyska; i++) { pravy[i]--; } pocetKroku++; } cout << "K prechodu reky je treba " << vysledek << " pontonu." << endl; } return 0; }