Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // C.cpp: определяет точку входа для консольного приложения.
- //
- //#include "stdafx.h"
- #include <cmath>
- #include <algorithm>
- #include <iostream>
- #include <vector>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- vector <ll> up, down;
- bool comp(ll a, ll b)
- {
- return(a > b);
- }
- int main()
- {
- ll last, count, n, data;
- char ch;
- cin >> last >> count >> n;
- for (int i = 0; i < n; i++)
- {
- cin >> data >> ch;
- if (ch == 'U')
- up.push_back(data);
- else
- down.push_back(data);
- if (ch == 'U' && data == 0)
- up.pop_back(), down.push_back(0);
- }
- sort(up.begin(), up.end(), comp);
- sort(down.begin(), down.end());
- ll mn, ans = 0, ans1 = 0, mx = count + up.size();
- for (int i = 0; i <= 2 * (mx); i++)
- {
- if (ans1 == mx)
- {
- cout << ans << endl;
- break;
- }
- mn = min(last - up[0], down[0]);
- for (int j = 0; j < up.size(); j++)
- up[j] += mn;
- for (int j = 0; j < down.size(); j++)
- down[j] -= mn;
- if (up[0] == last)
- {
- up.erase(up.begin());
- down.push_back(last);
- ans1++;
- }
- if (down[0] == 0)
- {
- down.erase(down.begin());
- up.push_back(0);
- }
- sort(up.begin(), up.end(), comp);
- sort(down.begin(), down.end());
- ans += mn;
- //cout << mn << ' ' << up.size() << ' ' << down.size() << endl;
- }
- //system("pause");
- return 0;
- }
- /*
- ё
- 4
- 1
- 2
- 4 U
- 0 U
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement