57862023-09-27 23:02:13AncsaKövetkező permutáció (50 pont)cpp11Elfogadva 50/507ms5016 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ÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1812 KiB
2Elfogadva0/04ms2076 KiB
3Elfogadva1/12ms2272 KiB
4Elfogadva1/13ms2504 KiB
5Elfogadva1/13ms2720 KiB
6Elfogadva1/13ms2912 KiB
7Elfogadva2/22ms3100 KiB
8Elfogadva2/23ms3280 KiB
9Elfogadva2/23ms3360 KiB
10Elfogadva2/22ms3364 KiB
11Elfogadva1/13ms3488 KiB
12Elfogadva1/12ms3568 KiB
13Elfogadva1/13ms3700 KiB
14Elfogadva1/12ms3972 KiB
15Elfogadva3/33ms3940 KiB
16Elfogadva3/33ms3944 KiB
17Elfogadva3/33ms3956 KiB
18Elfogadva3/33ms4048 KiB
19Elfogadva3/34ms4196 KiB
20Elfogadva3/36ms4284 KiB
21Elfogadva3/36ms4412 KiB
22Elfogadva3/36ms4508 KiB
23Elfogadva3/37ms4824 KiB
24Elfogadva3/36ms4772 KiB
25Elfogadva2/27ms5016 KiB
26Elfogadva2/27ms4740 KiB