Pagini recente »
Monitorul de evaluare
|
Rating Radu Tiberiu Andrei (tibyradu)
|
Profil Ana_22
|
Istoria paginii runda/2024-01-06-clasa-6-concurs03
|
Cod sursă (job #243983)
Cod sursă (job
#243983)
#include <cstdio>
#include <cstring>
#define MAXN 50000
int v[MAXN+1],vec[MAXN+1];
int main(){
FILE*fi,*fout;
int i,n,flag,poz,nr,begin,end,m,aux;
fi=fopen("specsort.in" ,"r");
fout=fopen("specsort.out" ,"w");
fscanf(fi,"%d" ,&n);
for(i=1;i<=n;i++)
fscanf(fi,"%d" ,&v[i]);
flag=1;
while(flag){
i=1;
while(i<=n&&v[i]==i)
i++;
if(i==n+1)
flag=0;
else{
i=2;
while(i<=n&&v[i]==v[i-1]+1)
i++;
if(v[i-1]==n)
nr=v[1]-1;
else
nr=n;
i=n;
m=0;
while(i>0){
if(v[i]==nr){
vec[++m]=nr;
nr--;
}
i--;
}
begin=1;
end=m;
while(begin<end){
aux=vec[begin];
vec[begin]=vec[end];
vec[end]=aux;
begin++;
end--;
}
poz=1;
for(i=1;i<=n;i++){
if(vec[poz]!=v[i])
vec[++m]=v[i];
else
poz++;
}
memcpy(&v,&vec,sizeof(vec));
for(i=1;i<=n;i++)
fprintf(fout,"%d " ,v[i]);
fprintf(fout,"\n");
}
}
fclose(fi);
fclose(fout);
return 0;
}