Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_DEPRECATE
- #include <iostream>
- #include <vector>
- #include <string>
- #include <map>
- #include <set>
- #include <algorithm>
- #define li long long
- using namespace std;
- vector<string> a;
- void build() {
- a.push_back("{}");
- for (int i = 0; i < 19; i++) {
- //random_shuffle(a.begin(), a.end());
- string s = "{";
- for (int j = 0; j < a.size(); j++) {
- s = s + a[j];
- if (j != a.size() - 1) {
- s = s + ",";
- }
- }
- s += "}";
- a.push_back(s);
- }
- for (int i = 0; i < a.size(); i++) {
- cout << a[i].size() << ", ";
- }
- }
- vector<int> t = { 2, 4, 9, 19, 39, 79, 159, 319, 639, 1279, 2559, 5119, 10239, 20479, 40959, 81919, 163839, 327679, 655359, 1310719 };
- pair<int, char> ans;
- void gen(string s, int l, int R) {
- if (s[l] == '{' && s[R] == '}') {
- int r = l + 1;
- bool f = 1;
- while (f) {
- f = 0;
- for (int i = 0; i < t.size(); i++) {
- if (r + t[i] < s.size() && s[r + t[i]] == ',' && r + t[i] < R && s[r] == '{' && s[r + t[i] - 1] == '}') {
- r += t[i] + 1;
- f = 1;
- break;
- }
- }
- }
- for (int i = 0; i < t.size(); i++) {
- if (r + t[i] - 1 < s.size() && s[r + t[i] - 1] == ',' || r + t[i] - 1 == R) {
- gen(s, r, r + t[i] - 2);
- }
- }
- }
- else {
- if (s[l] != '{') {
- ans = { l, '{' };
- }
- else {
- ans = { R + 1, '}' };
- }
- }
- }
- int main() {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- //build();
- string s;
- getline(cin, s);
- int open = 0;
- int close = 0;
- for (int i = 0; i < s.size(); i++) {
- if (s[i] == '{') {
- open++;
- }
- if (s[i] == '}') {
- close++;
- }
- }
- ans = { -1, ' ' };
- if (open == close) {
- for (int i = 0; i < s.size(); i++) {
- if (s[i] == '}' && s[i + 1] == '{') {
- ans = { i + 1, ',' };
- }
- }
- }
- else {
- gen(s, 0, s.size() - 1);
- }
- cout << s.substr(0, ans.first) << ans.second << s.substr(ans.first, s.size() - ans.first);
- }
Add Comment
Please, Sign In to add comment