5067 2023. 04. 13 17:53:32 czita Következő permutáció (50 pont) cpp17 Elfogadva 50/50 7ms 4316 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    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 (zekből kell kir
    //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 Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 4ms 2076 KiB
3 Elfogadva 1/1 3ms 2424 KiB
4 Elfogadva 1/1 3ms 2600 KiB
5 Elfogadva 1/1 2ms 2584 KiB
6 Elfogadva 1/1 3ms 2720 KiB
7 Elfogadva 2/2 3ms 2828 KiB
8 Elfogadva 2/2 2ms 2844 KiB
9 Elfogadva 2/2 2ms 2840 KiB
10 Elfogadva 2/2 3ms 2972 KiB
11 Elfogadva 1/1 2ms 3052 KiB
12 Elfogadva 1/1 2ms 3176 KiB
13 Elfogadva 1/1 2ms 3176 KiB
14 Elfogadva 1/1 3ms 3304 KiB
15 Elfogadva 3/3 3ms 3424 KiB
16 Elfogadva 3/3 3ms 3628 KiB
17 Elfogadva 3/3 3ms 3600 KiB
18 Elfogadva 3/3 3ms 3608 KiB
19 Elfogadva 3/3 4ms 3756 KiB
20 Elfogadva 3/3 6ms 3888 KiB
21 Elfogadva 3/3 6ms 3980 KiB
22 Elfogadva 3/3 6ms 4072 KiB
23 Elfogadva 3/3 6ms 4068 KiB
24 Elfogadva 3/3 6ms 4196 KiB
25 Elfogadva 2/2 7ms 4316 KiB
26 Elfogadva 2/2 6ms 4080 KiB