Cod sursa(job #1695660)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 27 aprilie 2016 16:56:08
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#define CIF 15
#define VAL 1005

using namespace std;

ifstream fin("koba.in");
ofstream fout("koba.out");

int N, C, i, v[VAL], ind;
int K, sum[VAL], j, S, s;
int ap[CIF][CIF][CIF];

int main()
{
    fin >> N >> v[1] >> v[2] >> v[3];
    for (i=1; i<=N; i++)
    {
        if (i<=3)
        {
            fin >> v[i];
            K++;
            v[i]%=10;
            sum[i]=v[i]+sum[i-1];
            if (i==3)
              ap[v[i]][v[i-1]][v[i-2]]=3;
        }
        else
        {
            v[i]=v[i-1]+v[i-2]*v[i-3];
            v[i]%=10;
            if (ap[v[i]][v[i-1]][v[i-2]]>0)
            {
                ind=ap[v[i]][v[i-1]][v[i-2]]-3;
                K=i-ap[v[i]][v[i-1]][v[i-2]];
                S=sum[ap[v[i]][v[i-1]][v[i-2]]-3];
                s=sum[i-1]+v[i]-sum[ap[v[i]][v[i-1]][v[i-2]]];
                break;
            }
            else
            {
                sum[i]=sum[i-1]+v[i];
                ap[v[i]][v[i-1]][v[i-2]]=i;
            }
        }
    }
    C=(N-ind) / K;
    S+=C*s;
    j=ind;
    for (i=ind+C*K+1; i<=N; i++)
    {
        j++;
        S+=v[j];
    }
    fout << S << '\n';
    fin.close();
    fout.close();
    return 0;
}