Ciao ragazzi, qualcuno che mi potrebbe aiutare?
Non capisco dove sia l’errore, ottengo 80/100, mi fallisce nel secondo testcase dove mi dice in alcuni outputs, execution killed with signal 11.
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
int n;
char e[10001];
int aperte = 0,chiuse = 0;
bool espressione()
{
stack<int> p;
for(int i = 0;i<n;i++)
{
switch(e[i]){
case '(':
case '[':
case '{':
case '<':
p.push(e[i]);
break;
case ')':
if(p.top() == '(')p.pop();
else return false;
break;
case ']':
if(p.top() == '[')p.pop();
else return false;
break;
case '}':
if(p.top() == '{')p.pop();
else return false;
break;
case '>':
if(p.top() == '<')p.pop();
else return false;
break;
default:
break;
}
}
if(p.empty()) return true;
else return false;
}
int main()
{
ifstream in("input.txt");
ofstream out("output.txt");
in>>n;
for(int i = 0;i<n;i++)
{
in>>e[i];
switch(e[i]){
case '(':
case '[':
case '{':
case '<':
aperte++;
break;
case ')':
case ']':
case '}':
case '>':
chiuse++;
break;
default:
break;
}
}
if(aperte == chiuse)
{
if(espressione())
out<<"corretta\n";
else out<<"malformata\n";
}else
out<<"malformata\n";
return 0;
}