Pagini recente » Cod sursa (job #716207) | Cod sursa (job #1720389) | Cod sursa (job #273928) | Cod sursa (job #219255) | Cod sursa (job #420000)
Cod sursa(job #420000)
#include <cstdio>
#include <stdlib.h>
int n,x,i,k;
FILE * in = fopen("schi.in","rt");
FILE * out = fopen("schi.out","wt");
//void quicksort(int array[][30001],int left,int right);
int main()
{
int *v1, *v2;
fscanf(in,"%d",&n);
v1 = (int*) calloc((n+1),4); // vector alocat dinamic
v2 = (int*) calloc((n+1),sizeof(int)); // vector alocat dinamic
for(i=1;i<=n;i++)
{
fscanf(in,"%d",&x);
v2[i] = i;
for(k=1;k<=i;k++)
{
if(v1[k] >= x) // toate valorile mai mari sau egale cu x
v1[k] = v1[k] + 1; // le retrogradeaza in clasament
}
v1[i] = x;
/*int e;
for(e=1;e<=n;e++)
printf("%d ",vector[0][e]);
printf("\n");*/
}
//quicksort(vector,1,n);
for(i=1;i<=n;i++)
v2[v1[i]] = i;
for(i=1;i<=n;i++)
fprintf(out,"%d\n",v2[i]);
free(v1);
free(v2);
// for(i=1;i<=n;i++)
// printf("%d ",vector[i]);
return (0);
}
/*void quicksort(int array[][30001],int left,int right)
{
int i,k,v,tmp1,tmp2;
if(left < right)
{
i = left - 1;
k = right;
v = array[0][right];
for(;;)
{
while(array[0][++i] < v);
while(array[0][--k] > v);
if(i >= k)
break;
tmp1 = array[0][i];
tmp2 = array[1][i];
array[0][i] = array[0][k];
array[1][i] = array[1][k];
array[0][k] = tmp1;
array[1][k] = tmp2;
}
tmp1 = array[0][i];
tmp2 = array[1][i];
array[0][i] = array[0][right];
array[1][i] = array[1][right];
array[0][right] = tmp1;
array[1][right] = tmp2;
quicksort(array,left,i-1);
quicksort(array,i+1,right);
}
}*/