ZOJ Problem Set - 1201
Inversion
#include<stdio.h>
#include<string.h>
int main(void)
{
int n, i, j;
char ch;
int serial[55],begin[55];
while (scanf("%d", &n) == 1 && n)
{
getchar();
scanf("%c", &ch);
for (i = 1; i <= n; ++i)
scanf("%d", &serial[i]);
switch (ch)
{
case 'P':
for (i = 1; i <= n; ++i)
{
int count = 0;
for (j = 1;; ++j)
{
if (serial[j] > i) count++;
if (serial[j] == i) break;
}
printf("%d", count);
if (i != n) printf(" ");
else printf("\n");
}
break;
case 'I':
memset(begin, 0, sizeof(begin));
for (i = 1; i <= n; ++i)
{
int count = 0;
for (j = 1; j <= n; ++j)
{
if (begin[j] == 0) count++;
if (count == serial[i]+1)
{begin[j] = i; break;}
}
}
for (i = 1; i <= n; ++i)
{
printf("%d", begin[i]);
if (i != n) printf(" ");
else printf("\n");
}
break;
default: break;
}
}
return 0;
}