#包括#包括#包括#包括#包括使用命名空间标准;typedef对点;结构CoverSet{地图covcnt;设置封面1;空隙覆盖(常数点&p,int mult=1){如果(covcnt[p]==1){覆盖1.擦除(p);}covcnt[p]+=倍数;如果(covcnt[p]==1){盖子1.插入(p);}}设置::const_iterator cover1_begin()const{返回盖1.begin();}设置::const_iterator cover1_end()const{返回盖1.end();}size_t大小()常量{return covcnt.size();}};int main(int ac,char**av){整数圆=0;矢量新列表;newlist.push_back(点(0,0));size_t总数=0;布尔dir=false;CoverSet c;用于(;;){++圆形;tot+=newlist.size();cout<<round<<“”<<tot<<“;for(矢量::迭代器i=newlist.begin();i!=newlist.end()++i){c.盖子(*i,2);if(目录){c.覆盖(点(i->第一,i->第二个1));c.覆盖(点(i->第一,i->第二+1));}其他{c.覆盖(点(i->第一个,i->第二个));c.覆盖(点(i->第一+1,i->第二));}}dir=!目录;newlist.clear();复制(c.cover1_begin(),c.cover1_end(),back_inserter(newlist));}}