Cod sursa(job #1799791)

Utilizator tudortarniceruTudor Tarniceru tudortarniceru Data 6 noiembrie 2016 19:59:19
Problema NextSeq Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nextseq.in");
ofstream fout("nextseq.out");
const int MAXN = 10005;
int n, l1, l2;
int v[MAXN];
int a[MAXN], b[MAXN];
int main() {
    fin >> n >> l1 >> l2;
    for (int i = 1; i <= n; ++i) {
        int k;
        fin >> k;
        v[k] = 1;
    }
    int k = 0;
    for (int i = 0; i <= MAXN - 1; ++i) {
        if (v[i] == 1) {
            k++;
            v[i] = k;
        }
    }
    for (int i = 1; i <= l1; ++i) {
        fin >> k;
        a[i] = v[k];
    }
    for (int i = 1; i <= l2; ++i) {
        fin >> k;
        b[i] = v[k];
    }
    for (int i = 1; i <= l1 / 2; ++i) {
        swap(a[i], a[l1 - i + 1]);
    }
    for (int i = 1; i <= l2 / 2; ++i) {
        swap(b[i], b[l2 - i + 1]);
    }
    int var = 1;
    int sol = 0;
    for (int i = 1; i <= l1; ++i) {
        fout << a[i] << ' ';
    }
    fout << '\n';
    for (int i = 1; i <= l2; ++i) {
        fout << b[i] << ' ';
    }
    fout << '\n';
    while (var == 1) {
        a[1]++;
        for (int i = 1; i <= l1; ++i) {
            if (a[i] > n) {
                a[i + 1]++;
                a[i] = 1;
            }
            else {
                i = l1 + 10;
            }
        }
        if (a[l1 + 1] > 0) {
            l1++;
        }
        if (l1 == l2) {
            var = 0;
            for (int i = 1; i <= l1; ++i) {
                if (a[i] != b[i]) {
                    var = 1;
                    i = l1 + 10;
                }
            }
        }
        sol += var;
    }
    fout << sol;
    fout.close();
    return 0;
}