Cod sursa(job #1563586)

Utilizator serbanSlincu Serban serban Data 6 ianuarie 2016 12:32:00
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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 %I64d %I64d\n", &n, &x1, &x2);
    r.push_back(x2 - x1); x1 = x2;
    for(int i = 2; i < n; i ++) {
        fscanf(f, "%I64d", &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]);
            }
            r[r.size() - 1] = x2 - x1;
        }
        x1 = x2;
    }
    fprintf(g, "%d\n", r.size());
    for(int i = 0; i < r.size(); i ++) fprintf(g, "%I64d\n", r[i]);
    return 0;
}