50692023-04-13 18:00:23czitaKövetkező permutáció (50 pont)cpp17Elfogadva 50/504ms3836 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n;
    cin >> n;
    vector<int> X(n, 0);//3 9 8 7 6 5 4 2 1
    for (size_t i = 0; i < n; i++)
    {
        cin >> X[i];
    }
    vector<int> Y;//ide gyűjtjük a nagyobb permutációhoz cserélendő számokat
    int db = n - 1; //megkeressük az első csokkenét a végéről indulva, mert az előtte lévők kell növelni
    while (db > 0 && (X[db] <= X[db - 1]))
    {
        Y.push_back(X[db]); //az elemeket addig áttesszük egy másik vektorba ebből rakjuk ki a nagyob elemet
        db--;
    }  //Y 1 2 4 5 6 7 8 db 1
    int ut = X[db - 1];//3 megjegyezzük az első cserélendő elemet 2 3 5 4 1 esetén a 3
    Y.push_back(X[db]); //betesszük az csúcselemet
    Y.push_back(X[db - 1]);//és az előtte lévőt is Y 1 2 4 5 6 7 8 9 3
    sort(Y.begin(), Y.end()); //rendezzük növekvő sorrendbe X 1 2 3 4 5 6 7 8 9
    int maxy = Y.size() - 1;//8
    while (Y[maxy - 1] > ut)//megkeressük az első cserélendődél nagyobb elemet
    {
        maxy--;
    }    // maxy 3
    X[db - 1] = Y[maxy];//ez lesz a nagyobb permutáció első eleme X 4 ... Y 1 2 3 |4| 5 6 7 8 9
    for (int i = maxy - 1; i >= 0; i--)//berakja a 4-nél kisebb elemeket az X-be csökkenő sorrendbe
    {   //Y 1 2 3
        X[db] = Y[i];
        db++;
    } // X 4 3 2 1
    for (int i =maxy+1; i < Y.size(); i++) //a 4 -nél nagyobbakat berekja növekvőbe
    {   //Y  5 6 7 8 9
        X[db] = Y[i];
        db++;
    } // X 4 3 2 1 5 6 7 8 9
    for (auto a : X)//kiírás
    {
        cout << a << " ";
    }
    cout << endl;

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1824 KiB
2Elfogadva0/04ms2216 KiB
3Elfogadva1/12ms2144 KiB
4Elfogadva1/12ms2108 KiB
5Elfogadva1/12ms2228 KiB
6Elfogadva1/12ms2320 KiB
7Elfogadva2/23ms2692 KiB
8Elfogadva2/22ms2580 KiB
9Elfogadva2/22ms2600 KiB
10Elfogadva2/22ms2740 KiB
11Elfogadva1/12ms2824 KiB
12Elfogadva1/12ms2820 KiB
13Elfogadva1/13ms2820 KiB
14Elfogadva1/12ms2824 KiB
15Elfogadva3/33ms3056 KiB
16Elfogadva3/32ms3060 KiB
17Elfogadva3/33ms3068 KiB
18Elfogadva3/33ms3068 KiB
19Elfogadva3/34ms3092 KiB
20Elfogadva3/34ms3244 KiB
21Elfogadva3/34ms3208 KiB
22Elfogadva3/34ms3372 KiB
23Elfogadva3/34ms3584 KiB
24Elfogadva3/34ms3512 KiB
25Elfogadva2/24ms3748 KiB
26Elfogadva2/24ms3836 KiB