Cod sursa(job #2157122)

Utilizator Garen456Paun Tudor Garen456 Data 9 martie 2018 11:40:57
Problema Numarare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int n,s[200005],b[200005],sol;


int main()
{   fin>>n;

    int i,ct=0,l,r,mid,sum=0;
    s[++ct]=100001;
    for(i=1;i<=n;++i)
    { ++ct;
      fin>>s[ct];
      s[++ct]=100001;
    }

    l=r=mid=1;
    for(i=2;i<=ct;++i)
        if(i%2)
      {if(i>r)
        {l=r=mid=i;
            sum=s[i+1]+s[i-1];
        }
       else
       { b[i]=b[2*mid-i];
          if(b[i]+i>=r)
          { b[i]=r-i;
            mid=i;
            if(mid%2)
               sum=s[mid+1]+s[mid-1];
            l=mid-b[i];
          }
       }
       while( l-1>=1 && r+1<=ct && ( (s[l-1]+s[r+1])==sum || (l-1)%2 )   )
       { b[mid]++;
           l--; r++;
       }
      }
    for(i=1;i<=ct;++i)
        sol+=b[i]/2;
    fout<<sol;
    return 0;
}