Example #1
0
void LIFO_Stack::print(ostream &os)const
{
	vector<elemtype>::const_reverse_iterator rit=_stack.rbegin(),rend=_stack.rend();
	os<<"\n\t";
	while(rit!=rend)
		os<<*rit++<<"\n\t";
	os<<endl;
}
Example #2
0
 cons_cell::cons_cell(vector<Cell> inCells)
 : cell_t(kCellType_cons)
 {
     vector<Cell>::const_reverse_iterator iter;
     for (iter = inCells.rbegin(); iter != (inCells.rend() - 1); ++iter) {
         cdr = std::make_shared<cons_cell>(*iter, cdr);
     }
 }
Example #3
0
bool solve(vector<pr> &vec,Graph &g){
    sort(vec.rbegin(),vec.rend());
    for(int i=0;i<vec.size();i++){
        int s=vec[i].second;
        if(g.BFS(s)) return true;
    }
    return false;
}
Example #4
0
shared_ptr<ViewItem> Ruler::get_mouse_over_item(const QPoint &pt)
{
	const vector< shared_ptr<TimeItem> > items(view_.time_items());
	for (auto i = items.rbegin(); i != items.rend(); i++)
		if ((*i)->enabled() && (*i)->label_rect(rect()).contains(pt))
			return *i;
	return nullptr;
}
Example #5
0
vector<L> convex_hull(vector<L> v) {
    if (v.size() <= 1)
        return v;
    sort(ALLOF(v), xy_less);
    vector<L> cv;
    walk_rightside(v.begin(), v.end(), cv);
    walk_rightside(v.rbegin(), v.rend(), cv);
    return cv;
}
Example #6
0
int main() {
	scanf("%d%d", &K, &N);
	sticks.resize(N + 1);
	sticks[0] = INF;
	for (int i = 1; i <= N; i++) scanf("%lld", &sticks[i]);
	sort(sticks.rbegin(), sticks.rend());
	memset(cache, -1, sizeof(cache));
	printf("%lld", minPenalites(N, K));
}
void sort(vector<int>& col)
{
    //typedef vector<int>::reverse_iterator Iter;
    for (auto i = col.rbegin(); i != col.rend(); ++i)
    {
        swap(*i, max(col.begin(), i.base()));
        print(col);
    }
}
void Output(ostream &outStrme, vector<Rec> &records, int limit)
{
  std::sort(records.rbegin(), records.rend());

  for (size_t i = 0; i < limit && i < records.size(); ++i) {
    const Rec &rec = records[i];
    outStrme << rec.line << endl;
  }
}
Example #9
0
	string largestNumber(vector<int>& nums) {
		sort(nums.begin(), nums.end(), my_comp_func);
		ostringstream os;
		for (auto it = nums.rbegin(); it != nums.rend(); it++)
			os << *it;
		if (os.str()[0] == '0')
			return "0";
		return os.str();
	}
TrellisPath::TrellisPath(const vector<const Hypothesis*> edges) 
:m_prevEdgeChanged(NOT_FOUND)
{
  m_path.resize(edges.size());
  copy(edges.rbegin(),edges.rend(),m_path.begin());
  InitScore();


}
int main() {
  int N, M; scanf("%d %d", &N, &M);
  for(int i = 1; i <= N; i++) scanf("%lld", &C[i]);

  while(M--) {
    int u, v; scanf("%d %d", &u, &v);
    G[u].push_back(v);
  }

  for(int i = 1; i <= N; i++) {
    if(!vis[i]) dfs(i);
  }
  reverse(order.begin(), order.end());

  long long ans = 0;
  for(int i = 0; i <= N; i++) dp[i] = 0;
  for(int i: order) {
    dp[i] += C[i];
    ans = max(ans, dp[i]);

    for(int v: G[i]) {
      dp[v] = max(dp[v], dp[i]);
    }
  }
  printf("%lld\n", ans);

  for(auto it = order.rbegin(); it != order.rend(); it++) {
    int i = *it;
    if(G[i].size() == 0) {
      dp2[i] = dp[i];
      dp3[i] = 0;
    }
    else {
      dp2[i] = -1;
      dp3[i] = LLONG_MAX/2;
      for(auto u: G[i]) {
        long long curr_inc = dp3[u] + (dp[u]-C[u]) - dp[i];
        if(dp2[i] == -1) {
          dp2[i] = dp2[u];
          dp3[i] = curr_inc;
        }
        else {
          if(dp3[i] - curr_inc > dp2[i] - dp2[u]) {
            dp2[i] = dp2[u];
            dp3[i] = curr_inc;
          }
        }
      }
    }
  }

  int Q; scanf("%d", &Q);
  while(Q--) {
    int u, d; scanf("%d %d", &u, &d);
    printf("%lld\n", max(ans, dp2[u] + d - dp3[u]));
  }
}
Example #12
0
 vector<vector<int> > subsets(vector<int>& nums)
 {
     // sort from big to small
     sort(nums.rbegin(), nums.rend());
     data = nums.begin();
     vector<int> trace;
     search(trace, nums.size() - 1);
     return result;
 }
Example #13
0
 void nextPermutation(vector<int>& nums) {
     if (nums.size() <= 1)
         return;
     int maxnum = *nums.rbegin();
     auto first = find_if(nums.rbegin(), nums.rend(), [&maxnum](int &num)
     { return num < maxnum ? true : (maxnum = num, false); });
     if (first == nums.rend())
     {
         reverse(nums.begin(), nums.end());
     }
     else
     {
         auto second = find_if(nums.rbegin(), first, [&first](int &num)
         {return num > *first; });
         swap(*first, *second);
         sort(nums.rbegin(), first, [](int &a, int &b){return a > b; });
     }
 }
Example #14
0
vector<vector<int>> levelOrder(TreeNode* root) {
    Traversal(0, root);
    vector<vector<int> > reverse_answer;
    vector<vector<int> >::reverse_iterator riter = ans.rbegin();
    for (; riter != ans.rend(); riter++) {
        reverse_answer.push_back(*riter);
    }
    return reverse_answer;
}
Example #15
0
shared_ptr<ViewItem> Viewport::get_mouse_over_item(const QPoint &pt)
{
	const vector< shared_ptr<ViewItem> > items(this->items());
	for (auto i = items.rbegin(); i != items.rend(); i++)
		if ((*i)->enabled() &&
			(*i)->hit_box_rect(rect()).contains(pt))
			return *i;
	return nullptr;
}
Example #16
0
int main()
{
	cin.sync_with_stdio(false);
	int C, N;

	in >> C;

	while (C--)
	{
		in >> N;

		solution.clear();
		isCycle = false;
		aj = vector<vector<int>>(26, vector<int>());

		vector<string> str(N);
		for (auto &e : str)
			in >> e;

		for (int i = 1; i < N; i++)
		{
			string& p = str[i-1];
			string& c = str[i];

			int Len = min(p.size(), c.size());
			for (int l = 0; l < Len; l++)
			{
				int P = p[l] - 'a';
				int C = c[l] - 'a';

				if (P != C)
				{
					aj[P].push_back(C);
					break;
				}
			}
		}

		used = vector<bool>(26, false);
		S = vector<bool>(26, false);

		for (int i = 0; i < 26; i++)
			if (!used[i]) dfs(i);

		if (isCycle)
			cout << "INVALID HYPOTHESIS" << endl;
		else
		{
			for (auto e = solution.rbegin(); e != solution.rend(); ++e)
				cout << (char)(*e + 'a');
			cout << endl;
		}
	}

	return 0;
}
Example #17
0
int main()
{
    int x;
    int y;
    int z;
    int n;
    float ans;
    int p;
	double temp;
	int edges_count;


	
	memset(adj, -1, sizeof(adj));

	cout << "Enter number of tasks and pocessors\n";

    cin >> tasks >> proc;
    for (int i = 0; i < tasks; i++) {
		temp = 0;
    	for (int j = 0; j < proc; j++) {
			cin >> task_time[i][j];
			temp += task_time[i][j];
		}
		avg[i] = (double) temp / (double) proc;
	}

	cout << "Number of edges for graph\n";
	cin >> edges_count;

	for (int i = 0; i < edges_count; i++) {
		cin >> x >> y >> z;
		adj[x][y] = z;
		parent[y].push_back(x);
	}
    
	for (int i = 0; i < tasks; i++) {
        rec_rank(i);
    }



    for (int i = 0; i < tasks; i++) {
		rank_task.push_back(make_pair(rank[i], i));
    }

	sort(rank_task.rbegin(), rank_task.rend());
    
	for (int i = 0; i < tasks; i++) {
    }

	heft();

    return 0;

}
Example #18
0
void calculate_beta(vector<uint8_t> const& sequence, hmm::hidden_markov_model<double> const& hmm,
    vector<double> const& scaling, vector<row_vector>& betas)
{
  size_t count = 0;
  for (row_vector const& beta
      : hmm::backward(sequence.rbegin(), sequence.rend(), scaling.rbegin(), hmm)) {
    betas[sequence.size()-count-1] = beta;
    ++count;
  }
}
Example #19
0
 void add(vector<int> &digits, int digit) {
     int c = digit;
     for_each(digits.rbegin(), digits.rend(), [&c](int &d) {
         d += c;
         c = d / 10;
         d %= 10;
     });
     if (c > 0)
         digits.insert(digits.begin(), 1);
 } 
Example #20
0
 vector<int> twoSum(vector<int>& nums, int target) {
     vector<int> tmp(nums.begin(), nums.end());
     std::sort(tmp.begin(), tmp.end());
     int i = 0;
     int j = tmp.size() - 1;
     while(i < j) {
         if(tmp[i] + tmp[j] == target) {
             i = std::find(nums.begin(), nums.end(), tmp[i]) - nums.begin();
             j = nums.rend() - std::find(nums.rbegin(), nums.rend(), tmp[j]) - 1;
             return vector<int>{i,j};
         }
         else if(tmp[i] + tmp[j] > target) {
             j--;
         }
         else {
             i++;
         }
     }
 }
Example #21
0
shared_ptr<ViewItem> Header::get_mouse_over_item(const QPoint &pt)
{
	const QRect r(0, 0, width() - BaselineOffset, height());
	const vector<shared_ptr<TraceTreeItem>> items(
		view_.list_by_type<TraceTreeItem>());
	for (auto i = items.rbegin(); i != items.rend(); i++)
		if ((*i)->enabled() && (*i)->label_rect(r).contains(pt))
			return *i;
	return shared_ptr<TraceTreeItem>();
}
Example #22
0
 void add(vector<int>& num, int digit){
     int c = digit; // carry
     for(auto it = num.rbegin(); it != num.rend(); it++){
         *it += c;
         c = *it / 10;
         *it %= 10;
     }
     if (c != 0)
         num.insert(num.begin(), 1);
 }
Example #23
0
       vector<int> plusOne(vector<int>& digits) {
     if(digits.size() == 0)
         return digits;
     vector<int>::reverse_iterator rit = digits.rbegin();
     vector<int> returnedVector;
     for( ;rit!= digits.rend(); ){
         if(*rit == 9){
             *rit = 0;
             rit++;
             if(rit == digits.rend()){
                 returnedVector.push_back(1);
             }
         }else{
             *rit +=1;
             break;
         }
     }
     returnedVector.insert(returnedVector.end(),digits.begin(),digits.end());
     return returnedVector;
 }
void PosteriorEstimator::getQValuesFromPEP(const vector<double>& pep, vector<double> & q) {
	int nP = 0;
	double sum = 0.0;
	// assuming pep sorted in decending order ?? sure?? //TOFIX
	for (vector<double>::const_iterator myP = pep.begin(); myP != pep.end(); ++myP, ++nP) {
		sum += *myP;
		q.push_back(sum / (double)nP);
	}
	partial_sum(q.rbegin(), q.rend(), q.rbegin(), mymin);
	return;
}
Example #25
0
int greedy_fit(int in, vector<int> coins)
{
    sort(coins.rbegin(), coins.rend());
    int sum=0;
    for(int i : coins)
    {
        if(sum+i<=in)sum+=i;
        if(sum==in)return sum;
    }
    return sum;
}
Example #26
0
 // 0 <= digit <= 9 
 void add(vector<int> &digits, int digit) {
     int c = digit; // carry, 进位
     for (auto it = digits.rbegin(); it != digits.rend(); ++it) { 
         *it += c;
         c = *it / 10;
         *it %= 10;
     }
     if (c > 0) 
     digits.insert(digits.begin(), 1); 
     
 }
void PosteriorEstimator::getQValuesFromP(double pi0,
                                         const vector<double>& p, vector<double> & q) {
	double m = (double)p.size();
	int nP = 1;
	// assuming combined sorted in decending order
	for (vector<double>::const_iterator myP = p.begin(); myP != p.end(); ++myP, ++nP) {
		q.push_back((*myP * m * pi0) / (double)nP);
	}
	partial_sum(q.rbegin(), q.rend(), q.rbegin(), mymin);
	return;
}
Example #28
0
	string check(vector <int> price, int budget, int k) {
		sort(price.rbegin(), price.rend());
		int i;
		for (i = 0; i < k; ++i) {
			budget -= price[i];
			if (budget < 0) {
				return "NO";
			}
		}
		return "YES";
	}
Example #29
0
void printVectorRev(vector<string> strings)
{
    vector<string>::reverse_iterator rstringIter;
    for (rstringIter = strings.rbegin();
        rstringIter != strings.rend();
        rstringIter++)
    {
        cout << *rstringIter << " ";
    }
    cout << endl;
}
Example #30
0
 vector<int> plusOne(vector<int>& digits) {
     int carry = 1;
     for (vector<int>::reverse_iterator ri = digits.rbegin(); ri != digits.rend(); ++ri)
     {
         int digit = *ri + carry;
         *ri = digit%10;
         carry = digit/10;
     }
     if (carry != 0) digits.insert(digits.begin(), carry);
     return digits;
 }