JosepRivaille

P46584: Diferència de taules

May 28th, 2015
1,854
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. typedef vector<double> Fila;
  6.  
  7. Fila diferencia(const Fila&v1, const Fila&v2) {
  8.     int s1 = v1.size();
  9.     int s2 = v2.size();
  10.     Fila aux(s1);
  11.     int i, j, k;
  12.     i = j = k = 0;
  13.     while (i < s1 and j < s2) {
  14.         if (v1[i] < v2[j]) {
  15.             if (k == 0 or v1[i] != aux[k-1]) {
  16.                 aux[k] = v1[i];
  17.                 ++k;
  18.             }
  19.             ++i;
  20.         }
  21.         else if (v1[i] > v2[j]) ++j;
  22.         else ++i;
  23.     }
  24.     while (i < s1) {
  25.         if (k == 0 or aux[k-1] != v1[i]) {
  26.             aux[k] = v1[i];
  27.             ++k;
  28.         }
  29.         ++i;
  30.     }
  31.     Fila dif(k);
  32.     for (i = 0; i < k; ++i) dif[i] = aux[i];
  33.     return dif;
  34. }
  35.  
  36. int main(){
  37.     int n;
  38.     cin >> n;
  39.     vector<double> v1(n);  
  40.     for (int i = 0; i < n; ++i) cin >> v1[i];
  41.    
  42.     int k;
  43.     cin >> k;
  44.     vector<double> v2(k);
  45.     for (int i = 0; i < k; ++i) cin >> v2[i];
  46.    
  47.     vector<double> dif;
  48.     dif = diferencia(v1,v2);
  49.    
  50.     for (int i = 0; i < dif.size(); ++i) {
  51.         if (i > 0) cout << ' ';
  52.         cout << dif[i];
  53.     }
  54. }
  55.  
  56. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment