记录编号 160162 评测结果 AAAAAAAAAA
题目名称 物质起源 最终得分 100
用户昵称 Gravatarwolf. 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2015-04-24 12:18:22 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<fstream>
#include<bitset>
#include<vector>
#include<deque>
#include<map>
#include<set>
#include<queue>
#include<string>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstdio>
using namespace std;
#if defined wolf
const string ok="OK";
const string kk="	";
ofstream nnew("origin.in",ios::app);
ifstream fin("origin.in");
#define fout cout
#define Endl endl
#else
ifstream fin("origin.in");
ofstream fout("origin.out");
#endif
vector<string> text;
map<string,bool> TT;
vector<string> newer;
//FILE *in,*out;
string check(const string txt,int p){
	string ans="";
	for(int i=p;i!=txt.size();++i){//查找每个化学式
		if((txt[i]>='a'&&txt[i]<='z')||(txt[i]>='0'&&txt[i]<='9')||(txt[i]>='A'&&txt[i]<='Z')){
			ans+=txt[i];
		}else{
			return ans;
		}
	}
	return ans;
}
void core(){
	vector<bool> flag;
	flag.resize(text.size()+2,0);
	bool fall=1;
	while(fall){
		fall=0;
		for(int i=0;i!=text.size();++i){//查找每个方程式
			if(flag[i]){
				continue;
			}
			bool io=1;
			for(int j=0;j<text[i].size();){//查找每个元素
				string txt=check(text[i],j);//下一位元素
				j+=txt.size();
				if(io){//处于等号左边
					if(TT.find(txt)==TT.end()){//不存在该元素
						goto next;
					}
				}else{//处于等号右边
					if(TT.find(txt)==TT.end()){//此时有新物质生成
						newer.push_back(txt);
						TT[txt]=1;
						fall=1;
					}
				}
				if(text[i][j]=='='){
					io=0;
				}
				++j;
			}
			//到此说明有这个方程式已完成
			flag[i]=1;
			next:
			;
		}
	}
	sort(newer.begin(),newer.end());
	fout<<newer.size()<<endl;
	for(int i=0;i!=newer.size();++i){
		fout<<newer[i]<<endl;
	}
}
int main(){
	int n=0;
	fin>>n;
	for(int i=0;i!=n;++i){
		string txt;
		fin>>txt;
		text.push_back(txt);
	}
	int m=0;
	fin>>m;
	for(int i=0;i!=m;++i){
		string txt;
		fin>>txt;
		TT[txt]=1;
	}
	core();
	//-------------------------*/
	#if defined wolf
	cout<<endl<<(double)clock()/CLOCKS_PER_SEC<<'s'<<endl;
	#endif
	return 0;
}
//Designed by wolf
//Fri Apr 24 2015