Cod sursa(job #1589746)

Utilizator LuurAndrei Florea Luur Data 4 februarie 2016 13:14:23
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
typedef vector<unsigned int64_t> v_ll;
int64_t N, L, U, S, El, PEl;
int main(){
    v_ll v;
    freopen("secv5.in","r",stdin);
    freopen("secv5.out","w",stdout);
    scanf("%I64d%I64d%I64d%I64d",&N,&L,&U,&PEl);
    int64_t h = 1; N--;
    for(; N; --N){
        scanf("%I64d",&El);
        if (El == PEl) h++;
        else v.push_back(h), h = 1, PEl = El;
    }
    v.push_back(h);
    for(int64_t i = L; i <= U; i++){
        int64_t SPrim = 0;
        if (i == 1){
            for(int64_t j = 0; j < v.size(); j+= i){
               SPrim += v[j]*(v[j]+1)/2;
            }
        }
        else{
            for(v_ll::iterator j = v.begin(); j < v.end()-i+1; j++){
               SPrim += (*j) * (*(j+i-1));
            }
        }
        S+= SPrim;
    }
    printf("%I64d",S);
    return 0;
}