/* helder.correia@fe.up.pt
 * Data: 14-03-2005
 *
 * aula prática 2 (ex: 1, 2, 3, 5b, 10a)
 */

#include <iostream>
#include <vector>

using namespace std;

template <class T> istream &ler_vector(istream &is, vector<T> &v) {
  while (!is.eof()) {
    T x;
    is >> x;
    v.push_back(x);
  }
  return is;    
}

template <class T> ostream &escrever_vector(ostream &is, const vector<T> &v) {
  for (int i = 0; i < v.size(); i++) {
    T x = v[i];
    is << x << " ";
  }
  return is;
}

template <class T> void encher_vector(vector<T> &v, const T& val) {
  for (int i = 0; i < v.size(); i++) 
    v[i] = val;
} 

template <class T> void addto_vector(vector<T> &v, const vector<T> &w) {
  int top = v.size() < w.size() ? v.size() : w.size();
  for (int i = 0; i < top; i++) 
    v[i] = v[i] - w[i]; 
}

template <class T> T soma_filtro(const vector<T> &v, const vector<bool> &f) {
  T sum = 0;
  for (int i = 0; i < v.size(); i++) {
    if (f[i]) sum += v[i];
  }
  return sum;
}  

// função main apenas para testar... não é importante
// para os exercícios

int main() {
  vector<int> ints;
  vector<int> test (5, -1);

  vector<float> flts;
  vector<string> strgs;
 
  int fill = 2;
  
  ler_vector (cin, ints);
  cout << endl;
  
  encher_vector (test, fill);

  cout << "v1: ";
  escrever_vector (cout, ints);
  cout << endl;

  cout << "v2: ";
  escrever_vector (cout, test);
  cout << endl;

  addto_vector(ints, test);
  cout << "res: ";
  escrever_vector (cout, ints);
  cout << endl;

  return 0;
} 

