Pagini recente » Cod sursa (job #2923545) | Cod sursa (job #1630477) | Cod sursa (job #1681024) | Cod sursa (job #1717528) | Cod sursa (job #419330)
Cod sursa(job #419330)
#include <stdio.h>
int n,x,i,k,vector[2][NMAX];
FILE * in = fopen("schi.in","rt");
FILE * out = fopen("schi.out","wt");
int found();
void quicksort(int array[][30000],int left,int right);
int main()
{
fscanf(in,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(in,"%d",&x);
vector[1][i] = i;
if(!found) // daca nu exista cineva pe pozitia x in clasament
vector[0][i] = x;
else
for(k=1;k<=i;k++)
{
if(vector[0][k] >= x) // toate valorile mai mari sau egale cu x
vector[0][k] = vector[0][k] + 1; // le retrogradeaza in clasament
vector[0][i] = x;
}
}
quicksort(vector,1,n);
for(i=1;i<=n;i++)
fprintf(out,"%d\n",vector[1][i]);
return (0);
}
int found()
{
int e;
for(e=1;e<=i;e++)
if(vector[0][e] == x)
return 1;
return 0;
}
void quicksort(int array[][30000],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);
}
}