115312024-10-19 11:35:47DávidBob Baba Zárójelsorozatacpp17Hibás válasz 20/100587ms544 KiB
#include <bits/stdc++.h>
#include <utility>
#include <vector>
using namespace std;

int n;
vector<long long> prefix;

vector<pair<int, int>> szamolas(int b) {
	vector<pair<int, int>> eredmeny;
	pair<int, int> par = pair<int, int>(-1, -1);
	if(b >= n) par = pair<int, int>(0, 0);
	bool jo = false;
	int j = b + 1;
	for(int i = b + 2; i <= n; i++) {
		while(prefix[j] - prefix[b] < prefix[i] - prefix[j]) {
			j++;
		}
		if(prefix[j] - prefix[b] == prefix[i] - prefix[j]) {
			par = pair<int, int>(j, i);
			vector<pair<int, int>> v = szamolas(i);
			if(v[0].first > -1) {
				eredmeny = v;
				jo = true;
			}
		}
	}
	eredmeny.push_back(par);
	return eredmeny;
}

int main() {
	cin >> n;

	prefix.resize(n + 1);

	for(int i = 1; i <= n; i++) {
		cin >> prefix[i];
		prefix[i] += prefix[i - 1];
	}

	vector<pair<int, int>> eredmeny = szamolas(0);
	if(eredmeny[0].first == -1) {
		cout << -1 << endl;
		return 0;
	}
	reverse(eredmeny.begin(), eredmeny.end());

	int j = 0;
	for(long long i = 1; i <= prefix[n]; i++) {
		if(i <= prefix[eredmeny[j].first]) {
			cout << "(";
		} else if(i <= prefix[eredmeny[j].second]) {
			cout << ")";
		} else {
			j++;
			cout << "(";
		}
	}
	cout << endl;
	
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms320 KiB
2Elfogadva1ms320 KiB
3Elfogadva1ms320 KiB
subtask220/20
4Elfogadva1ms320 KiB
5Elfogadva1ms508 KiB
6Elfogadva1ms320 KiB
subtask30/30
7Hibás válasz1ms320 KiB
8Hibás válasz1ms320 KiB
9Hibás válasz1ms320 KiB
10Hibás válasz1ms320 KiB
11Hibás válasz1ms320 KiB
subtask40/50
12Elfogadva1ms320 KiB
13Futási hiba3ms320 KiB
14Futási hiba3ms320 KiB
15Futási hiba3ms320 KiB
16Futási hiba3ms424 KiB
17Elfogadva1ms320 KiB
18Elfogadva1ms320 KiB
19Hibás válasz1ms320 KiB
20Hibás válasz1ms320 KiB
21Hibás válasz1ms320 KiB
22Futási hiba1ms320 KiB
23Elfogadva1ms320 KiB
24Elfogadva1ms320 KiB
25Hibás válasz1ms324 KiB
26Hibás válasz1ms500 KiB
27Elfogadva1ms320 KiB
28Elfogadva1ms324 KiB
29Elfogadva1ms320 KiB
30Elfogadva1ms320 KiB
31Hibás válasz1ms320 KiB
32Hibás válasz1ms320 KiB
33Elfogadva1ms320 KiB
34Elfogadva1ms320 KiB
35Elfogadva1ms320 KiB
36Hibás válasz1ms320 KiB
37Hibás válasz1ms320 KiB
38Hibás válasz1ms320 KiB
39Hibás válasz1ms320 KiB
40Hibás válasz1ms320 KiB
41Futási hiba3ms440 KiB
42Hibás válasz1ms332 KiB
43Hibás válasz1ms500 KiB
44Hibás válasz1ms544 KiB
45Hibás válasz1ms500 KiB
46Hibás válasz1ms320 KiB
47Futási hiba1ms500 KiB
48Futási hiba1ms320 KiB
49Futási hiba3ms320 KiB
50Futási hiba1ms320 KiB
51Futási hiba1ms320 KiB
52Futási hiba1ms320 KiB
53Időlimit túllépés587ms320 KiB
54Időlimit túllépés583ms508 KiB
55Futási hiba3ms320 KiB
56Futási hiba3ms408 KiB
57Futási hiba2ms320 KiB
58Futási hiba3ms320 KiB