#include #include #include using namespace std; int N, K; vector uzatvorkovanie; // Funkcia spravneBez skontroluje správnosť uzátvorkovania // bez zátvorky typu t. bool spravneBez(int t) { stack zasobnik; for (int i = 0; i < N; i++) if (t != uzatvorkovanie[i] && t != -uzatvorkovanie[i]) { if (uzatvorkovanie[i] < 0) zasobnik.push(uzatvorkovanie[i]); else { if (zasobnik.empty()) return false; else if (zasobnik.top() == -uzatvorkovanie[i]) zasobnik.pop(); else return false; } } if (zasobnik.empty()) return true; else return false; } int main() { // Načítanie vstupu. scanf("%d%d", &N, &K); uzatvorkovanie.resize(N); for (int i = 0; i < N; i++) scanf("%d", &uzatvorkovanie[i]); // Algoritmus. stack zasobnik; for (int i = 0; i < N; i++) { if (uzatvorkovanie[i] < 0) // Na i-tej pozícií je otváracia zátvorka. zasobnik.push(uzatvorkovanie[i]); else { // Na i-tej pozícií je uzavieracia zátvorka. if (zasobnik.empty()) { // Vyčerpali sa otváracie zátvorky. if (spravneBez(uzatvorkovanie[i])) // Skúsime správnosť bez aktuálnej uzavieracej. printf("Spravne bez zatvorky typu %d.\n", uzatvorkovanie[i]); else printf("Nespravne.\n"); return 0; } else if (zasobnik.top() == -uzatvorkovanie[i]) // K poslednej otváracej zátvorke máme príslušnú uzavieraciu. zasobnik.pop(); else if (zasobnik.top() != -uzatvorkovanie[i]) { // Nezhodujú sa typy zátvoriek. if (spravneBez(zasobnik.top())) printf("Spravne bez zatvorky typu %d.\n", zasobnik.top()); else if (spravneBez(uzatvorkovanie[i])) printf("Spravne bez zatvorky typu %d.\n", uzatvorkovanie[i]); else printf("Nespravne.\n"); return 0; } } } if (zasobnik.empty()) printf("Spravne.\n"); else { if (spravneBez(zasobnik.top())) printf("Spravne bez zatvorky typu %d.\n", zasobnik.top()); else printf("Nespravne.\n"); } return 0; }