Cod sursa(job #2578211)

Utilizator stefan_cucosCucos Stefan stefan_cucos Data 10 martie 2020 19:06:02
Problema Oo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.73 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream in("oo.in");
ofstream out("oo.out");

struct vect
{
    int nr,poz;
} v[100001];

int n,s,x,y,pp[100001],k,ok;

void citire()
{
    in>>n;
    for(int i=1; i<=n; i++)
    {
        in>>v[i].nr;
        v[i].poz=i;
    }
}

int main()
{
    citire();
    for(int i=1; i<n; i++)
    {
        for(int j=i+1; j<=n; j++)
        {
            if(v[i].nr<v[j].nr)
            {
                int auxnr=v[i].nr;
                int auxpoz=v[i].poz;
                v[i].nr=v[j].nr;
                v[i].poz=v[j].poz;
                v[j].nr=auxnr;
                v[j].poz=auxpoz;
            }
        }
    }
    for(int j=1; j<=n; j++)
    {
        ok=0;
        if(v[j].poz==n)
        {
            for(int i=1;i<=k;i++)
                if(pp[i]==1)
                    ok=1;
        }
        for(int i=1; i<=k; i++)
        {
            if(pp[i]==v[j].poz-1 || pp[i]==v[j].poz+1 || pp[i]==v[j].poz-2 || pp[i]==v[j].poz+2)
                ok=1;
        }
        if(ok!=1)
        {
            for(int i=1; i<=n; i++)
            {
                if(v[j].poz==v[i].poz-1)
                    x=v[i].nr;
                if(v[j].poz==v[i].poz+1)
                    y=v[i].nr;
            }
            if(x<y)
            {
                s=s+v[j].nr+y;
                k++;
                pp[k]=v[j].poz;
                k++;
                pp[k]=v[j].poz-1;
            }
            else
            {
                s=s+v[j].nr+x;
                k++;
                pp[k]=v[j].poz;
                k++;
                pp[k]=v[j].poz+1;
            }
        }
    }
    out<<s;
    return 0;
}