Pagini recente » Cod sursa (job #805836) | Cod sursa (job #157805) | Cod sursa (job #1375636) | Cod sursa (job #2639812) | Cod sursa (job #420009)
Cod sursa(job #420009)
#include <cstdio>
#include <cstdlib>
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 **matrix;
fscanf(in,"%d",&n);
matrix = (int **) calloc((n+1),sizeof(int *));
for(i=0;i<=1;i++)
matrix[i] = (int *) calloc((n+1),sizeof(int));
for(i=1;i<=n;i++)
{
fscanf(in,"%d",&x);
matrix[1][i] = i;
for(k=1;k<=i;k++)
{
if(matrix[0][k] >= x) // toate valorile mai mari sau egale cu x
matrix[0][k] = matrix[0][k] + 1; // le retrogradeaza in clasament
}
matrix[0][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++)
matrix[1][matrix[0][i]] = i;
for(i=1;i<=n;i++)
fprintf(out,"%d\n",matrix[1][i]);
for(i=0;i<=1;i++)
free(matrix[i]);
free(matrix);
// 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);
}
}*/