Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int textFormatting(vector <int> starting, vector <int> ending, vector <char> style) {
- int max_coord = 0;
- int n = starting.size();
- for (int i = 0; i < n; ++i) {
- max_coord = max(max_coord, ending[i]);
- }
- max_coord += 2;
- int letters_b[1000000];
- int letters_i[1000000];
- int letters_u[1000000];
- for (int i = 0; i < n; ++i) {
- if (style[i] == 'b') {
- letters_b[starting[i]]++;
- letters_b[ending[i] + 1]--;
- }
- }
- for (int i = 0; i < n; ++i) {
- if (style[i] == 'i') {
- letters_i[starting[i]]++;
- letters_i[ending[i] + 1]--;
- }
- }
- for (int i = 0; i < n; ++i) {
- if (style[i] == 'u') {
- letters_u[starting[i]]++;
- letters_u[ending[i] + 1]--;
- }
- }
- vector <pair <pair <int, int>, char> > sect;
- int pos = 0;
- int l = 0;
- for (int i = 0; i < max_coord; i++) {
- pos += letters_b[i];
- //cout << pos << ' ' << l << endl;
- if (pos > 0) {
- if (l == 0) {
- l = i;
- }
- } else if (l != 0) {
- sect.push_back(make_pair(make_pair(l, i - 1), 'b'));
- l = 0;
- }
- }
- l = 0;
- pos = 0;
- for (int i = 0; i < max_coord; i++) {
- pos += letters_i[i];
- if (pos > 0) {
- if (l == 0) {
- l = i;
- }
- } else if (l != 0) {
- sect.push_back(make_pair(make_pair(l, i - 1), 'i'));
- l = 0;
- }
- }
- l = 0;
- pos = 0;
- for (int i = 0; i < max_coord; i++) {
- pos += letters_u[i];
- if (pos > 0) {
- if (l == 0) {
- l = i;
- }
- } else if (l != 0) {
- sect.push_back(make_pair(make_pair(l, i - 1), 'u'));
- l = 0;
- }
- }
- sort(sect.begin(), sect.end());
- int res = 2;
- for (int i = 1; i < (int) sect.size(); ++i) {
- if (sect[i] == sect[i - 1]) {
- res += 0;
- } else if (sect[i].first == sect[i - 1].first) {
- res += 1;
- } else {
- res += 2;
- }
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement