ZOJ Problem Set - 1201 Inversion

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章