- #include <stdio.h>
- #include <stdlib.h>
- void swap(int *a, int *b)
- {
- int tmp = *a;
- *a = *b;
- *b = tmp;
- }
- int *fun(int *begin, int *end)
- {
- int *re = begin;
- while(begin <= end)
- {
- swap(begin,end);
- begin++;
- end--;
- }
- return re;
- }
- void fun3(int *data, int n, int p)
- {
- int *re = fun(data, data+n-1);
- int *b1 = re;
- int *e1 = re+(n-p)-1;
- int *re1 = fun(b1,e1);
- int *b2 = e1 + 1;
- int *e2 = b2+p-1;
- int *re2 = fun(b2,e2);
- int *b3 = re1;
- int *e3 = re1+n/2-1;
- int *re3 = fun(b3,e3);
- }
- int main()
- {
- int n,m,p;
- int *data;
- while(1)
- {
- scanf("%d %d", &n, &m);
- if(0 == n)
- break;
- else
- {
- data = (int*)malloc(sizeof(int)*n);
- int i;
- for(i = 0; i < n; i++)
- data[i] = i + 1;
- for(i = 0; i < m; i++)
- {
- scanf("%d",&p);
- fun3(data,n,p);
- }
- for(i = 0; i < n; i++)
- printf("%d ", data[i]);
- printf("\\n");
- free(data);
- }
- }
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/1807201410023.html
来源: http://www.codesnippet.cn/detail/1807201410023.html