5786 2023. 09. 27 23:02:13 Ancsa Következő permutáció (50 pont) cpp11 Elfogadva 50/50 7ms 5016 KiB
#include <bits/stdc++.h>

using namespace std;
/*
8
2 3 5 8 7 6 4 1
*/
int main()
{
    int n;
    cin>>n;
    vector<int> a(n);
    for(int i=0;i<n;i++)
        cin>>a.at(i);

    vector<int> vege;
    //a vector vegerol levesszuk a csokkeno reszt
    int index=n-1;   //2 3 5 4 1

    while(a.at(index-1)>a.at(index))
    {
        vege.push_back(a.at(index));
        index--;
    }
    vege.push_back(a.at(index));

    //cout<<"cserelni kell a "<<a.at(index-1)<<endl;
    int j=0;
    while(a.at(index-1)>vege.at(j))
        j++;

    int temp=vege.at(j);
    vege.at(j)=a.at(index-1);
    a.at(index-1)=temp;

    vector<int> kicsik, nagyok;
    for(int x:vege)
    {
        if(x>a.at(index-1))
            nagyok.push_back(x);
        else
            kicsik.push_back(x);
    }

    int hol=kicsik.size()-1;
    for (int i=index;i<index+kicsik.size();i++)
    {
        a.at(i)=kicsik.at(hol);
        hol--;
    }
    index+=kicsik.size();
    hol=0;
    for(int i=index;i<n;i++)
    {
        a.at(i)=nagyok.at(hol);
        hol++;
    }
    for(int x:a)
        cout<<x<<" ";
    return 0;
}
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 2ms 2272 KiB
4 Elfogadva 1/1 3ms 2504 KiB
5 Elfogadva 1/1 3ms 2720 KiB
6 Elfogadva 1/1 3ms 2912 KiB
7 Elfogadva 2/2 2ms 3100 KiB
8 Elfogadva 2/2 3ms 3280 KiB
9 Elfogadva 2/2 3ms 3360 KiB
10 Elfogadva 2/2 2ms 3364 KiB
11 Elfogadva 1/1 3ms 3488 KiB
12 Elfogadva 1/1 2ms 3568 KiB
13 Elfogadva 1/1 3ms 3700 KiB
14 Elfogadva 1/1 2ms 3972 KiB
15 Elfogadva 3/3 3ms 3940 KiB
16 Elfogadva 3/3 3ms 3944 KiB
17 Elfogadva 3/3 3ms 3956 KiB
18 Elfogadva 3/3 3ms 4048 KiB
19 Elfogadva 3/3 4ms 4196 KiB
20 Elfogadva 3/3 6ms 4284 KiB
21 Elfogadva 3/3 6ms 4412 KiB
22 Elfogadva 3/3 6ms 4508 KiB
23 Elfogadva 3/3 7ms 4824 KiB
24 Elfogadva 3/3 6ms 4772 KiB
25 Elfogadva 2/2 7ms 5016 KiB
26 Elfogadva 2/2 7ms 4740 KiB