Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- struct graphic
- {
- int duration;
- int value;
- };
- int main()
- {
- int n1, n2;
- cin >> n1;
- cin >> n2;
- graphic g1[n1];
- graphic g2[n2];
- vector<struct graphic> g3;
- int duration1 = 0;
- int duration2 = 0;
- for (int i = 0; i < n1; ++i)
- {
- cin >> g1[i].duration >> g1[i].value;
- duration1 += g1[i].duration;
- }
- for (int i = 0; i < n2; ++i)
- {
- cin >> g2[i].duration >> g2[i].value;
- duration2 += g2[i].duration;
- }
- int i = 0;
- int j = 0;
- graphic curr_1 = g1[0];
- graphic curr_2 = g2[0];
- graphic tmp;
- int size = 0;
- while (i < n1 & j < n2)
- {
- tmp.value = curr_1.value + curr_2.value;
- if (curr_1.duration < curr_2.duration)
- {
- tmp.duration = curr_1.duration;
- curr_2.duration -= curr_1.duration;
- i++;
- curr_1 = g1[i];
- }
- else if (curr_2.duration < curr_1.duration)
- {
- tmp.duration = curr_2.duration;
- curr_1.duration -= curr_2.duration;
- j++;
- curr_2 = g2[j];
- }
- else if (curr_2.duration == curr_1.duration)
- {
- tmp.duration = curr_2.duration;
- i++;
- j++;
- curr_1 = g1[i];
- curr_2 = g2[j];
- }
- if (size > 0 && tmp.value == g3[size - 1].value)
- g3[size - 1].duration += tmp.duration;
- else
- {
- g3.push_back(tmp);
- size++;
- }
- }
- if (duration1 < duration2)
- {
- g3.push_back(curr_2);
- j++;
- while (j < n2)
- {
- g3.push_back(g2[j]);
- j++;
- }
- }
- if (duration2 < duration1)
- {
- g3.push_back(curr_1);
- i++;
- while (i < n1)
- {
- g3.push_back(g1[i]);
- i++;
- }
- }
- for (int i = 0; i < g3.size(); i++)
- cout << "(" << g3[i].duration << ";" << g3[i].value << ")" << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment