UVA101:
#includeusing namespace std; vector block[30]; int n; void init() { cin>>n; for(int i=0;i h的所有块归位 { for(int i=h+1;i =h的所有块移动到q之上 { for(int i=h;i >s1) { if(s1=="quit") break; cin>>a>>s2>>b; int ap=0,ah=0,bp=0,bh=0; loc(a,ap,ah); loc(b,bp,bh); if(ap==bp) continue; if(s1=="move")//a归位 goback(ap,ah); if(s2=="onto")//b归位 goback(bp,bh); moveall(ap,ah,bp); } } void print() { for(int i=0;i UVA12657:
#includeusing namespace std; int r[100000+5],l[100000+5]; void init(int n) { for(int i=1;i<=n;i++) { l[i]=i-1; r[i]=(i+1)%(n+1); } r[0]=1; l[0]=n; } void link(int L,int R) { r[L]=R; l[R]=L; } int main() { int n,m,a,x,y,k=0; bool flag; while(cin>>n>>m) { flag=false; init(n); for(int i=0;i >a; if(a==4) flag=!flag;//翻转 else { cin>>x>>y; if(a==3&&r[y]==x) swap(x,y); if(a!=3&&flag) a=3-a; if(a==1&&x==l[y]) continue; if(a==2&&x==r[y]) continue; int Lx=l[x],Rx=r[x],Ly=l[y],Ry=r[y]; if(a==1) { link(Lx,Rx);//删除x link(Ly,x); link(x,y);//x插入y左 } else if(a==2) { link(Lx,Rx);//删除x link(y,x); link(x,Ry);//x插入y右 } else if(a==3) { if(r[x]==y) { link(Lx,y); link(y,x); link(x,Ry); } else { link(Lx,y);//交换位置 link(y,Rx); link(Ly,x); link(x,Ry); } } } } int t=0; long long sum=0; for(int i=1;i<=n;i++) { t=r[t]; if(i%2==1) sum+=t; } if(flag&&n%2==0) sum=(long long)n*(n+1)/2-sum; cout<<"Case "<<++k<<": "< UVA11988:
#includeusing namespace std; void solve(string s) { int len=s.length(); list text; list ::iterator it=text.begin(); for(int i=0;i >s) solve(s); return 0; }



