void dalsi_permutace(vector &A) { int x = A.size() - 2; while (x >= 0 && A[x] >= A[x+1]) x--; if (x >= 0) // Není to případ poslední -> první { int y = A.size() - 1; while (A[y] <= A[x]) y--; swap(A[x], A[y]); // Prohodíme } reverse(A.begin()+x+1, A.end()); // Otočíme }