Cod sursa(job #2080291)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 2 decembrie 2017 18:34:10
Problema Plus Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <iostream>

using namespace std;

int main()
{
    FILE *fin=fopen ("plus.in","r");
    FILE *fout=fopen ("plus.out","w");
    long long s,n1,n2,n3,nr1,nr2,nr3,sol,i,st,dr,zero=0,cs;
    fscanf (fin,"%lld%lld%lld%lld%lld%lld%lld",&s,&n1,&nr1,&n2,&nr2,&n3,&nr3);
    sol=0;
    for (i=0;i<=n1;i++){
        cs=s;
        s=s-i*nr1;
        if (nr2==0){
            if (nr3==0){
                if (s==0)
                    sol=sol+(n2+1)*(n3+1);
            }
            else if (s/nr3>=0 && s/nr3<=n3)
                    sol=sol+n2+1;
        }
        else if (nr3==0){
            if (s/nr2>=0 && s/nr2<=n2)
                    sol=sol+n3+1;
        }
        else {
            st=(s-n3*nr3)/nr2;
            dr=s/nr2;
            if (st>dr)
                swap(st,dr);
            // max dintre interval si 0
            sol=sol+max ( min(dr,n2)-max(st,zero)+1 , zero);
        }
        s=cs;
    }
    fprintf (fout,"%lld",sol);
    return 0;
}