vadimk772336

Untitled

Feb 1st, 2022 (edited)
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. struct graphic
  6. {
  7.     int duration;
  8.     int value;
  9. };
  10.  
  11. int main()
  12. {
  13.  
  14.     int n1, n2;
  15.     cin >> n1;
  16.     cin >> n2;
  17.  
  18.     graphic g1[n1];
  19.     graphic g2[n2];
  20.     vector<struct graphic> g3;
  21.  
  22.     int duration1 = 0;
  23.     int duration2 = 0;
  24.  
  25.     for (int i = 0; i < n1; ++i)
  26.     {
  27.         cin >> g1[i].duration >> g1[i].value;
  28.         duration1 += g1[i].duration;
  29.     }
  30.  
  31.     for (int i = 0; i < n2; ++i)
  32.     {
  33.         cin >> g2[i].duration >> g2[i].value;
  34.         duration2 += g2[i].duration;
  35.     }
  36.  
  37.     int i = 0;
  38.     int j = 0;
  39.  
  40.     graphic curr_1 = g1[0];
  41.     graphic curr_2 = g2[0];
  42.     graphic tmp;
  43.     int size = 0;
  44.  
  45.     while (i < n1 & j < n2)
  46.     {
  47.  
  48.         tmp.value = curr_1.value + curr_2.value;
  49.  
  50.         if (curr_1.duration < curr_2.duration)
  51.         {
  52.             tmp.duration = curr_1.duration;
  53.             curr_2.duration -= curr_1.duration;
  54.             i++;
  55.             curr_1 = g1[i];
  56.         }
  57.  
  58.         else if (curr_2.duration < curr_1.duration)
  59.         {
  60.             tmp.duration = curr_2.duration;
  61.             curr_1.duration -= curr_2.duration;
  62.             j++;
  63.             curr_2 = g2[j];
  64.         }
  65.  
  66.         else if (curr_2.duration == curr_1.duration)
  67.         {
  68.             tmp.duration = curr_2.duration;
  69.             i++;
  70.             j++;
  71.             curr_1 = g1[i];
  72.             curr_2 = g2[j];
  73.         }
  74.  
  75.         if (size > 0 && tmp.value == g3[size - 1].value)
  76.             g3[size - 1].duration += tmp.duration;
  77.         else
  78.         {
  79.             g3.push_back(tmp);
  80.             size++;
  81.         }
  82.     }
  83.  
  84.     if (duration1 < duration2)
  85.     {
  86.         g3.push_back(curr_2);
  87.         j++;
  88.         while (j < n2)
  89.         {
  90.             g3.push_back(g2[j]);
  91.             j++;
  92.         }
  93.     }
  94.  
  95.     if (duration2 < duration1)
  96.     {
  97.         g3.push_back(curr_1);
  98.         i++;
  99.         while (i < n1)
  100.         {
  101.             g3.push_back(g1[i]);
  102.             i++;
  103.         }
  104.     }
  105.  
  106.     for (int i = 0; i < g3.size(); i++)
  107.         cout << "(" << g3[i].duration << ";" << g3[i].value << ")" << endl;
  108.  
  109.  
  110.     return 0;
  111. }
  112.  
Add Comment
Please, Sign In to add comment