51362023-04-20 01:43:04AncsaKövetkező permutáció (50 pont)cpp11Accepted 50/507ms4832 KiB
#include <bits/stdc++.h>

using namespace std;
/*
5
2 3 5 4 1

5
1 3 4 5 2


*/
void kiirvec(vector<int> a)
{
    //cout<<endl;
    for(int x : a)
        cout<<x<<" ";
    //cout<<endl;
}

int main()
{
    int n;
    cin>>n;
    vector <int> hatsok;
    vector<int> perm(n);
    for(int i=0;i<n;i++)
        cin>>perm.at(i);

    if (perm.at(n-2)<perm.at(n-1))
    {
       swap(perm.at(n-2),perm.at(n-1));
       //kiirvec(perm);
       return 0;
    }
    hatsok.push_back(perm.at(n-1));
    int ind=n-2;
    while(ind>0 && perm.at(ind)>perm.at(ind+1) )
    {
        hatsok.push_back(perm.at(ind));
        ind--;
    }
    hatsok.push_back(perm.at(ind));

    int csere=perm.at(ind);
    int mire, hol;
    sort(hatsok.begin(),hatsok.end());
    for(int i=0;i<hatsok.size();i++)
    {
       if(hatsok.at(i)>=csere+1)
         {
             mire=hatsok.at(i);
             hol=i;
             break;
         }
    }
    hatsok.erase(hatsok.begin()+hol);
    perm.at(ind)=mire;
    //kiirvec(perm);
    int k=1;
    vector<int> kicsik, nagyok;
    for(int x : hatsok)
      {
         if(x<mire)
         {
             kicsik.push_back(x);
         }
         else
         {
             nagyok.push_back(x);
         }
      }
     //kiirvec(kicsik);
     //kiirvec(nagyok);
     for(int i=kicsik.size()-1;i>=0;i--)
     {
        perm.at(ind+k++)=kicsik.at(i);
        //kiirvec(perm);
     }
     for(int i=0;i<nagyok.size();i++)
        perm.at(ind+k++)=nagyok.at(i);
     kiirvec(perm);


//    cout << "Hello world!" << endl;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1808 KiB
2Accepted0/04ms2176 KiB
3Accepted1/13ms2216 KiB
4Accepted1/12ms2428 KiB
5Accepted1/13ms2672 KiB
6Accepted1/13ms3032 KiB
7Accepted2/23ms3196 KiB
8Accepted2/23ms3212 KiB
9Accepted2/23ms3276 KiB
10Accepted2/22ms3280 KiB
11Accepted1/13ms3344 KiB
12Accepted1/12ms3560 KiB
13Accepted1/12ms3648 KiB
14Accepted1/12ms3656 KiB
15Accepted3/33ms3656 KiB
16Accepted3/33ms3656 KiB
17Accepted3/33ms3788 KiB
18Accepted3/33ms4016 KiB
19Accepted3/36ms4276 KiB
20Accepted3/36ms4500 KiB
21Accepted3/36ms4584 KiB
22Accepted3/36ms4600 KiB
23Accepted3/36ms4600 KiB
24Accepted3/37ms4604 KiB
25Accepted2/27ms4832 KiB
26Accepted2/26ms4596 KiB