Cod sursa(job #1689524)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 14 aprilie 2016 12:27:04
Problema Operatii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <vector>
#include <cstdio>

using namespace std;

vector<int> v[100006];

int i,j,x,n,ans,pi,ps;
long long Ans;
bool ap[1000006];

int main()
{
    freopen("operatii.in", "r", stdin);
    freopen("operatii.out", "w", stdout);

    scanf("%d", &n);

    for(i=1; i<=n; ++i)
    {
        scanf("%d", &x);
        v[x].push_back(i);
        ap[i]=1;
    }

    ans=1;
    Ans=0;

    for(i=0; i<=100000; ++i)
    {
        for(j=0; j<v[i].size(); ++j)
        {
            pi=v[i][j];

            while(j+1<v[i].size() && v[i][j]+1==v[i][j+1])
            {
                ap[v[i][j]]=0;
                ++j;
            }

            ps=v[i][j];
            ap[ps]=0;

            if(!ap[pi-1] && !ap[ps+1]) --ans;
            else if(ap[pi-1] && ap[ps+1]) ++ans;
        }
        Ans+=ans;
    }

    printf("%lld\n", Ans);

    return 0;
}