fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6.  
  7. bool permutacja(ll t[], ll n)
  8. {
  9. ll i,j;
  10.  
  11. for(i=n-2;(i>=0)&&(t[i]>=t[i+1]);i--) {} // szukam pierwszej liczby od prawej, która jest mniejsza od swojego prawego sąsiada
  12. if(i<0) return false; // jeżeli jej nie znajdę, to kończę działanie programu, bo otrzymana permutacja jest ostatnia
  13. for(j=n-1;(j>i)&&(t[j]<=t[i]);j--) {} // szukam pierwszej liczby od prawej, która jest większa od znalezionej
  14. swap(t[i],t[j]); // zamieniam je miejscami
  15. for(i++, j=n-1; i<j; i++, j--)
  16. swap(t[i],t[j]); // zamieniam liczby zgodnie z algorytmem
  17. return true;
  18. }
  19.  
  20. int main()
  21. {
  22. ll n;
  23.  
  24. cin >> n;
  25.  
  26. ll t[n];
  27.  
  28. for(ll i=0; i<n; i++)
  29. cin >> t[i];
  30.  
  31. if(!permutacja(t, n)) // jeżeli funkcja zwróciła "false", wypisuje brak
  32. cout << "BRAK";
  33. else // w przeciwnym przypadku wypisuję gotową permutację
  34. for(ll i=0; i<n; i++)
  35. cout << t[i] << ' ';
  36.  
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
BRAK