#include<bits/stdc++.h>
using namespace std;
long long n,m,t,i,inv,cas,ans;
struct node{
long long l,r;
}a[100010];
void link(long long x,long long y){
a[x].r=y;
a[y].l=x;
}
int main(){
while(scanf("%lld%lld",&n,&m)==2){
cas++;
inv=0;
for(i=0;i<=n;i++){
a[i].l=i-1;
a[i].r=i+1;
}
a[0].l=-1;
a[n].r=-1;
while(m--){
scanf("%lld",&t);
if(t==4)inv=!inv;
else{
long long x,y;
scanf("%lld%lld",&x,&y);
if((t==1||t==2)&&inv)t=3-t;
long long lx=a[x].l,rx=a[x].r,ly=a[y].l,ry=a[y].r;
if(t==1&&rx!=y){
if(lx==y)t=3;
else{
link(lx,rx);
link(ly,x);
link(x,y);
}
}
if(t==2&&lx!=y){
if(rx==y)t=3;
else{
link(lx,rx);
link(x,ry);
link(y,x);
}
}
if(t==3){
if(rx==y){
link(lx,y);
link(x,ry);
link(y,x);
}
else if(lx==y){
link(ly,x);
link(y,rx);
link(x,y);
}
else{
link(ly,x);
link(x,ry);
link(lx,y);
link(y,rx);
}
}
}
}
long long tt=0;
ans=0;
for(i=1;i<=n;i++){
tt=a[tt].r;
if(i%2==1)
ans+=tt;
}
if(inv==0)printf("Case %lld: %lld\n",cas,ans);
else printf("Case %lld: %lld\n",cas,(n+1)*n/2-ans);
}
return 0;
}
UVA 12657 Boxes in a Line
最新推荐文章于 2023-01-02 14:06:09 发布