Se dă un șir P de lungime N cu elemente distincte din mulțimea {1,2..,N}. Pentru fiecare poziție i din șirul P se cere să aflați cea mai mică poziție j, astfel încât P[j] < P[i] și j < i. În caz că o astfel de poziție nu există se consideră -1 ca soluție.

Răspuns :

#include <iostream>

using namespace std;

int main()
{   
    int N; 

   cin>>N; 
   cout<<endl; 

   int P[N];
   for(int i=1;i<=N;i++) 
        {       
            cin>>P[i]; 
        }   

     cout<<endl;   

     for(int i=N;i>=1;i--)   
         {       
                for(int j=1;j<=N;j++)   
                       {           
                              if(P[j] < P[i] && j<i)     
                                  {               
                                       P[i]= j;           
                                       break;   
                                   }       
                              else if(j == i)         
                                   {             
                                       P[i]=-1;       
                                       break;       
                                   }             
                       }     
          }

  for(int i=1; i<=N;i++)   
     {  
       cout<<P[i]<<" ";
     }

}
Vezi imaginea RAYZEN