Qualcuno mi sa consigliare come migliorare l’algoritmo?
faccio 90/100, l’ultimo testcase da errore Execution timed out.
Grazie.
#include<stdio.h>
#include<stdlib.h>
int n;
char versi[100000];
int valori[100001];
void scambia(int n, int m)
{
int temp=valori[n];
valori[n]=valori[m];
valori[m]=temp;
}
int vero(int a, int b)
{
if(versi[a]=='>')
if(valori[a]>valori[b])
return 1;
else
return 0;
else
if(valori[a]<valori[b])
return 1;
else
return 0;
}
main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
scanf("%d", &n);
int i;
scanf("%c",&versi[0]);
for(i=0; i<n-1; i++)
scanf("%c", &versi[i]);
if(versi[0]=='>')
for(i=0; i<n; i++)
valori[i]=n-i-1;
else
for(i=0; i<n; i++)
valori[i]=i;
genera: i=0;
while(i+1<n && vero(i, i+1))
i++;
if(i+1<n)
{
scambia(i, i+1);
goto genera;
}
for(i=0; i<n-1; i++)
{
printf("%d ",valori[i]+1);
}
printf("%d", valori[n-1]+1);
}