5136 2023. 04. 20 01:43:04 Ancsa Következő permutáció (50 pont) cpp11 Elfogadva 50/50 7ms 4832 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1808 KiB
2 Elfogadva 0/0 4ms 2176 KiB
3 Elfogadva 1/1 3ms 2216 KiB
4 Elfogadva 1/1 2ms 2428 KiB
5 Elfogadva 1/1 3ms 2672 KiB
6 Elfogadva 1/1 3ms 3032 KiB
7 Elfogadva 2/2 3ms 3196 KiB
8 Elfogadva 2/2 3ms 3212 KiB
9 Elfogadva 2/2 3ms 3276 KiB
10 Elfogadva 2/2 2ms 3280 KiB
11 Elfogadva 1/1 3ms 3344 KiB
12 Elfogadva 1/1 2ms 3560 KiB
13 Elfogadva 1/1 2ms 3648 KiB
14 Elfogadva 1/1 2ms 3656 KiB
15 Elfogadva 3/3 3ms 3656 KiB
16 Elfogadva 3/3 3ms 3656 KiB
17 Elfogadva 3/3 3ms 3788 KiB
18 Elfogadva 3/3 3ms 4016 KiB
19 Elfogadva 3/3 6ms 4276 KiB
20 Elfogadva 3/3 6ms 4500 KiB
21 Elfogadva 3/3 6ms 4584 KiB
22 Elfogadva 3/3 6ms 4600 KiB
23 Elfogadva 3/3 6ms 4600 KiB
24 Elfogadva 3/3 7ms 4604 KiB
25 Elfogadva 2/2 7ms 4832 KiB
26 Elfogadva 2/2 6ms 4596 KiB