Pagini recente » Rating Bogdan Ivan (BVLU) | Cod sursa (job #8538) | Cod sursa (job #1694948) | Cod sursa (job #2989731) | Cod sursa (job #2390989)
/*
* NVIDIA, Fuck you!
* - Linux Torvalds
*/
#include <stdio.h>
#pragma GCC optimize ("-O3,-ffast-math")
#pragma GCC target("sse3")
#define o3 __attribute__((optimize("-O3")))
#define always_inline __inline__ __attribute__((always_inline))
#define fast_shit o3 always_inline
#define MAX_N 30000
int v[MAX_N];
int r[MAX_N + 1];
struct {
int data[MAX_N + 1];
int n;
}aib;
int query(int i)
{
int sum = 0;
while(i != 0)
{
sum += aib.data[i];
i -= i & (-i);
}
return sum;
}
fast_shit void increment(int i)
{
while(i <= aib.n)
{
aib.data[i] ++;
i += i & (-i);
}
}
int main()
{
FILE *fin, *fout;
int n;
fin = fopen("schi.in", "r");
fscanf(fin, "%d", &n);
aib.n = n;
for(int i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
fclose(fin);
for(int i = n - 1; i >= 0; i--)
{
int x;
int last_x = 0;
while((x = query(v[i])) != last_x)
v[i] += (x - last_x), last_x = x;
r[v[i]] = i + 1;
increment(v[i]);
}
fout = fopen("schi.out", "w");
for(int i = 1; i <= n; i ++)
fprintf(fout, "%d\n", r[i]);
fclose(fout);
}