记录编号 101130 评测结果 AA
题目名称 [UVa 101] 木块问题 最终得分 100
用户昵称 Gravatarwolf 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2014-05-09 21:57:37 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
#include<vector>
using namespace std;
FILE *open;
FILE *out;
int n;
vector<vector<int> > AA;
vector<int>::iterator y;
vector<int>::iterator a1;
vector<int>::iterator a2;
vector<int>::iterator b1;
vector<int>::iterator b2;
int seek(int number){
	for(int i=0;i!=AA.size();++i){
		y=AA[i].begin();
		for(int q=0;q!=AA[i].size();++q){
			if(number==AA[i][q]){
				y=y+q;
				return i;
			}
		}
	}
	return n+1;
}
int move_onto(int a,int b){
	int A,B;
	A=seek(a);
	a1=y;
	B=seek(b);
	b1=y;
	if(A==B||*a1==*b1){
		return 0;
	}
	++b1;
	AA[B].insert(b1,*a1);
	AA[A].erase(a1);
	return 1;
}
int move_over(int a,int b){
	int A,B;
	A=seek(a);
	a1=y;
	B=seek(b);
	b1=y;
	if(A==B||*a1==*b1){
		return 0;
	}
	AA[B].push_back(*a1);
	AA[A].erase(a1);
	return 1;
}
int pile_onto(int a,int b){
	int A,B;
	A=seek(a);
	a1=y;
	B=seek(b);
	b1=y;
	if(A==B||*a1==*b1){
		return 0;
	}
	a2=AA[A].end();
	++b1;
	AA[B].insert(b1,a1,a2);
	AA[A].erase(a1,a2);
	return 1;
}
int pile_over(int a,int b){
	int A,B;
	A=seek(a);
	a1=y;
	B=seek(b);
	b1=y;
	//cout<<"a1 "<<*a1;
	if(A==B||*a1==*b1){
		return 0;
	}
	a2=AA[A].end();
	b2=AA[B].end();
	AA[B].insert(b2,a1,a2);
	AA[A].erase(a1,a2);
	return 1;
}
int main(){
	open=fopen("uvablock.in","r");
	out=fopen("uvablock.out","w");
	fscanf(open,"%d",&n);
	AA.resize(n);
	for(int i=0;i!=n;++i){
		AA[i].push_back(i);
	}
	bool end=1;
	while(end){
		char e[4];
		char r[4];
		int a,b;
		fscanf(open," %s %d %s %d",&e,&a,&r,&b);
		//cout<<a<<"  "<<b<<endl;
		if(e[0]=='q')
			break;
		if(e[0]=='m'){
			if(r[1]=='n'){
				move_onto(a,b);
			}else{
				move_over(a,b);
			}
		}else{
			if(r[1]=='n'){
				pile_onto(a,b);
			}else{
				pile_over(a,b);
			}
		}
	}
	//cout<<endl;
	for(int i=0;i!=AA.size();++i){
		fprintf(out,"%d:",i);
		//cout<<i<<":";
		for(int q=0;q!=AA[i].size();++q){
			fprintf(out,"%d ",AA[i][q]);
			//cout<<AA[i][q]<<"  ";
		}
		fprintf(out,"\n");
		//cout<<endl;
	}
	return 0;
}
//desugned by wolf