#include <iostream>
using namespace std;
void citire(int a[], int &n)//citeste n si vectorul a cu n elemente
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
}
void afisare(int a[], int n)//afiseaza cele n elemente din vectorul a
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}
void permuta(int a[], int n)//permuta cu o pozitie spre stanga
{
int aux=a[1];//retinem primul element in aux
for(int i=1;i<n;i++) a[i]=a[i+1];//mutam fiecare element cu o pozitie spre stanga
a[n]=aux;//punem aux pe ultima pozitie
}
void permutari(int a[], int n, int b[])//realizeaza permutatile circulare si calculeaza lungimea
{ //secventei de lungime maxima si furnizeaza prin b permutarea in care s-a gasit secventa de
//lungime maxima
int maxx=0;//lungimea maxima a secventei
int l;//lungimea secventei curente
for(int k=1;k<=n;k++)
{//repet de n ori pt cele n permutari circulare
permuta(a,n);//permut cu o pozitie
l=1;
for(int i=1;i<n;i++) //parcurg permutarea
if(a[i]<a[i+1])//elementele sunt in ordine strict crescatoare
{
l++;//maresc lungimea secventei curente
if(l>maxx)//daca e mai mare ca lungimea maxima
{
maxx=l; //retin noua lungime maxima
for(int j=1;j<=n;j++) b[j]=a[j];//copiez permutarea in b
}
}
else l=1;//altfel reinitializez lungimea secventei
}
}
int main()
{
int a[100], n, b[100];
citire(a,n);//citeste vectorul a
permutari(a,n,b);//creeaza permutarile lui a si retine in b pe cea ceruta
afisare(b,n);//afiseaza b
return 0;
}
|