Cod sursa(job #1563590)

Utilizator serbanSlincu Serban serban Data 6 ianuarie 2016 12:41:59
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

vector<long long> r;

int main()
{
    FILE *f = fopen("reguli.in", "r"),
         *g = fopen("reguli.out", "w");

    int n;
    long long x1, x2; fscanf(f, "%d %lld %lld\n", &n, &x1, &x2);
    r.push_back(x2 - x1); x1 = x2;
    for(int i = 2; i < n; i ++) {
        fscanf(f, "%lld", &x2);
        if(r[(i - 1) % r.size()] != (x2 - x1)) {
            int in = r.size();
            while(r.size() < i) {
                for(int j = 0; j < in && r.size() < i; j ++)
                    r.push_back(r[j]);
            }
            if(r[0] == x2 - x1) r.pop_back();
            else r[r.size() - 1] = x2 - x1;
        }
        x1 = x2;
    }
    fprintf(g, "%d\n", r.size());
    for(int i = 0; i < r.size(); i ++) fprintf(g, "%lld\n", r[i]);
    return 0;
}