Cod sursa(job #2062263)

Utilizator dragos.galeteanu2001Dragos Iulian dragos.galeteanu2001 Data 10 noiembrie 2017 10:10:17
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("nunta.in");
ofstream g("nunta.out");

int main()
{
    short int i, N, a[999], b[999], c[999], a2=999, b2=999, c2=-1, vfa, vfb, aaux, baux, rest, ii;
    f>>N;
    if (N==1) { g<<1; return 0; }
    if (N==2) { g<<2; return 0; }
    a[--a2]=1; a[--a2]=1; aaux=a[a2]; vfa=a2;
    b[--b2]=2; b[--b2]=1; baux=b[b2]; vfb=b2;
    for (i=3; i<=N; i++) {
        rest=0; a2++; b2++;
        do {
            c[++c2]=(a[a2]+b[b2]+rest)%10;
            rest=(a[a2++]+b[b2++]+rest)/10;
            aaux--; baux--;
        } while (aaux && baux);
        do {
            if (aaux==baux) break;
            if (aaux<baux) {
                c[++c2]=(b[b2]+rest)%10;
                rest=(b[b2++]+rest)/10;
            }
            else {
                c[++c2]=(a[a2]+rest)%10;
                rest=(a[a2++]+rest)/10;
            }
        } while (aaux || baux);
        c[++c2]=c2;
        if (i!=N) {
            for (i=998; i>=vfb; i--) a[i]=b[i];
            ii=999;
            for (i=c2-1; i>=0; i--) b[--ii]=c[i];
            b[--ii]=c2;
        }
    }
    for (i=c2-1;i>=0;i--) g<<c[i];
    f.close();
    g.close();
    return 0;
}