Cod sursa(job #2361634)

Utilizator MatiPopa Mati Mati Data 2 martie 2019 17:33:21
Problema Numarare triunghiuri Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int n,k,i,as,ev,st[4],rezultat,v[801];
void succesor()
{
    if(st[k]<n)
    {
        as=1;
        st[k]++;
    }

    else as=0;
}

void valid()
{
    ev=1;

    for(i=1;i<k;i++)
        if(st[i]==st[k]) ev=0;

        if(k>1 && st[k]<st[k-1]) ev=0;
}

void back()
{
    k=1;
    st[k]=0;

    while(k>0) {

    succesor();
    if(as)
        valid();

    while(as && ev==0)
    {
        succesor();
        if(as)
            valid();
    }

    if(as)
    {
        if(k==3)
        {
            if(v[st[1]]+v[st[2]]>=v[st[3]] && v[st[1]]+v[st[3]]>=v[st[2]] && v[st[2]]+v[st[3]]>=v[st[1]])
                rezultat++;
            /*for(i=1;i<=3;i++)
                cout<<st[i]<<" ";
            cout<<endl;*/
        }

        else st[++k]=0;
    }

    else k--; }
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>v[i];

    back();

    fout<<rezultat;

    return 0;
}