| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
虽然最后发现看错题了,但还是发一下错误的代码纪念一下#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
#include<string>
using namespace std;
char ch[10001];
class ty
{public:
int level,count;
ty *left,*right;
ty()
{
count=level=0;
left=right=0;
}
void resize()
{
if(level>1)
{
int *e=new int [level];
e[0]=left->count;
e[1]=left->right->count;
int k=2,i,j;
ty *ps,*o=left->right->right,*df;
while(o)
{
e[k]=o->count;
k++;
o=o->right;
}
sort(e,e+level,greater<int>());
for(i=0;i<level;i++)
{
if(i==0)
ps=left;
else
ps=ps->right;
for(j=i;j<level;j++)
{
if(i==j)
o=ps;
else
o=o->right;
if(o->count==e[i])
{
if(o!=ps)
{
df=ps->left;
ps->left=o->left;
o->left=df;
o->count=ps->count;
ps->count=e[i];
int u=ps->level;
ps->level=o->level;
o->level=u;
}
break;
}
}
}
for(i=0;i<level;i++)
e[i]+=i;
count=*max_element(e,e+level);
delete []e;
}
else if(level==1)
count=left->count;
}
};
void output(ty *o)
{
if(o->level==0)
printf("%c",'a');
else if(o->level<0)
{
for(int i=0;i<o->count;i++)
printf("%c",'a');
printf("%d",o->count);
}
else
{
ty *r=o->left;
while(r)
{
output(r);
r=r->right;
}
cout<<o->count;
}
}
ty data[10001],*ee,*u;
vector<ty *> tree;
int main()
{
scanf("%s",ch);
int i=0,j,l,k,p,f,a,b;
int s=strlen(ch);
while(i<s)
{ j=i;
while(ch[i]=='a')
{
data[i].level=0;
data[i].count=1;
i++;
}
l=i-j;
if(l>=ch[i]-'0')
{ k=l;
k-=(ch[i]-'0');
for(p=j;p<j+k;p++)
tree.push_back(&data[p]);
ee=new ty;
ee->level=-(ch[i]-'0');
ee->count=(ch[i]-'0');
ee->left=&data[p];
tree.push_back(ee);
}
else
{ l=(ch[i]-'0');
k=j;
for(;k<i;k++)
tree.push_back(&data[k]);
f=tree.size()-l;
ee=new ty;
ee->level=l;
ee->left=tree[f];
a=f;
for(b=1;b<l;b++)
{ tree[a]->right=tree[a+1];
a++;
}
ee->resize();
tree.erase(tree.begin()+f,tree.end());
tree.push_back(ee);
}
i++;
}
cout<<tree[0]->count<<endl;
output(tree[0]);
cout<<endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator