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]; }
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(); }