Cod sursa(job #961068)

Utilizator primulDarie Sergiu primul Data 11 iunie 2013 16:48:51
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;
}