ural 1685. Orthography (樹的遍歷)


#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
 
char s[20001],ans[20001];
 
void workk(int l,int r,int ll,int rr)
{
    if (l>r) return;
    if (l==r){ans[ll-1]=s[l-1];return;}
    int mid=(ll+rr)>>1,len=(r-l+1)>>1;
    ans[mid-1]=s[l-1];
    if ((l+r)&1)
    {
        workk(l+1,l+len-1,ll,mid-1);
        workk(l+len,r,mid+1,rr);
    }
    else
    {
        workk(l+1,l+len,ll,mid-1);
        workk(l+len+1,r,mid+1,rr);
    }
}
int main()
{
    gets(s);
    //cout<<s<<endl;
    workk(1,strlen(s),1,strlen(s));
    cout<<ans;
    cin>>s;

    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章