Cod sursa(job #941109)

Utilizator andreiagAndrei Galusca andreiag Data 17 aprilie 2013 22:44:34
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <cstdio>
#include <vector>

#define SIZE 500005

using namespace std;

long long sir[SIZE];
int N;

int process_array(long long sir[SIZE]) {
    int ret = 0;
    int cnd = 0;
    int pos = 1;
    while(pos < N - 1) {
        if (sir[cnd] == sir[pos]) {pos++; cnd++;}
        else {if (cnd == 0) pos++; else cnd = 0;}
        //cout << cnd << ' ' << pos << endl;
    }
    ret = pos - cnd;
    return ret;
}

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

    long long a, b;
    scanf("%d", &N);
    scanf("%lld", &a);
    for(int i = 0; i < N - 1; i++) {
        scanf("%lld", &b);
        sir[i] = b - a;
        a = b;
    }
    int result;

    result = process_array(sir);

    printf("%d\n", result);
    for(int i = 0; i < result; i++) {
            printf("%lld\n", sir[i]);
    }

    return 0;
}