Esempio n. 1
0
int smallestRouteFile(const string &f) {
	int i, r;
	Grid v;
	Level l;
	
	//Init
	v = readFile(f);
	
	//Copy left side numbers
	for(i = 0; i < v.size(); i++)
		l.push_back(v[i][0]);
	
	//Calc smallest to right
	for(i = 1; i < v.size(); i++)
		l = NextLevel(v, l, i);
	
	//get smallest at first position
	sort(l.begin(), l.end());
	
	return l[0];
}
Esempio n. 2
0
SymbolTable::iterator SymbolTable::addLevel(Level lev, SymbolTable::iterator before){
	auto chk = lookup.find(lev.name);
	if(chk != lookup.end()){
		iterator iter = chk->second;
		iter->merge(lev.begin(), lev.end());
		return iter;
	}else if(before!=levelList.end()){
		double ind1 = before->getIndex();
		double ind2 = ind1-10;
		if(ind2 < 0) throw TableException();
		else if(!before->prev.empty()) ind2 = getLevel(before->prev)->getIndex();
		
		lev.setIndex((ind1+ind2)/2);
		lev.prev = before->prev;
		before->prev = lev.name;
	}else{
		lev.setIndex(mx_ind);
		mx_ind+=1e6;
		lev.prev = (--levelList.end())->name;
	}
	levelList.push_back(lev);
	return lookup[lev.name] = --levelList.end();
	
}