Cod sursa(job #1046913)

Utilizator geniucosOncescu Costin geniucos Data 3 decembrie 2013 18:29:03
Problema Adapost 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
using namespace std;
int l,nr,maxi,n,i,a[1000009],st[1000009];
char ch;
int max(int a,int b)
{
    if(a>b) return a;
    return b;
}
int main()
{
freopen("paranteze.in","r",stdin);
freopen("paranteze.out","w",stdout);
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
    scanf("%c",&ch);
    if(ch=='{') a[i]=0;
    else
    if(ch=='[') a[i]=1;
    else
    if(ch=='(') a[i]=2;
    else
    if(ch==')') a[i]=3;
    else
    if(ch==']') a[i]=4;
    else a[i]=5;
}
for(i=1;i<=n;i++)
{
    if(a[i]>=3)
    {
        if(a[st[nr]]==5-a[i]&&nr!=0){nr--;l+=2;}
        else
        {
            l=0;
            nr=0;
        }
    }
    else
    {
        nr++;
        st[nr]=i;
    }
    if(l>maxi)
        maxi=l;
}
printf("%d\n",maxi);
return 0;
}