例题8-1 UVA

来源:互联网 发布:win7激活 知乎 编辑:程序博客网 时间:2024/05/21 22:54

 Stacks of Flapjacks  UVA - 120

/*算法竞赛入门 LRJ 例题8-1 UVA - 120*/#include<iostream>#include<cstdio>#include<cstring>#include<stack>#include<map>#include<queue>#include<cmath>#include<algorithm>#include<deque>typedef long long LL;using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")const double eps = 1e-6;const int INF=0x3f3f3f3f;const int N = 1010;const int PI = acos(-1.0);int a[N],b[N];bool cmp(int x,int y){    return x > y;}void handle(int l,int r){    while(l < r)    {        int temp = a[l];        a[l] = a[r];        a[r] = temp;        l++;        r--;    }}int main(){    int n = 0;    char c;    while(~scanf("%d%c",&a[++n],&c))    {        while(c == ' ')            scanf("%d%c",&a[++n],&c);        for(int i = 1 ;i <= n; i++)        {        //    b[i] = a[i];            if(i == n)                printf("%d\n",a[i]);            else                printf("%d ",a[i]);        }        handle(1,n);        for(int i = 1 ;i <= n; i++)            b[i] = a[i];        sort(b+1,b+n+1,cmp);        for(int i = 1; i <= n; i++)        {            //printf("%d ",b[i]);            if(b[i] == a[i])                continue;            int temp;            for(int j = i+1; j <= n; j++)                if(b[i] == a[j])                    temp = j;            if(temp != n)            {                printf("%d ",temp);                handle(temp,n);                temp = n;            }            printf("%d ",i);            handle(i,temp);        }        printf("0\n");        n = 0;    }    return 0;}


0 0
原创粉丝点击