Cod sursa(job #2333284)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 31 ianuarie 2019 20:30:48
Problema Plus Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>
using namespace std;
ifstream fi("plus.in");
ofstream fo("plus.out");
int sum,nra,nrb,nrc,va,vb,vc,i,aux;
long long rez;
int main()
{
    fi>>sum;
    fi>>nra>>va;
    fi>>nrb>>vb;
    fi>>nrc>>vc;
    for(i=0; i<=nra; i++)
    {
        sum=sum-va*i;
        if(vb==0)
        {
            if(vc==0 && sum==0)
                rez=rez+1LL*(nrb+1)*(nrc+1);
            if((vc<0 && vc*nrc<=sum) || (vc>0 && vc*nrc>=sum))
                rez=rez+1LL*(nrb+1);
            continue;
        }
        if(vb!=vc)
        {
            if(vb==-1)
            {
                swap(vb,vc);
                swap(nrb,nrc);
            }
            if(sum<0)
                rez=rez+1LL*min(nrb+1,max(0,nrc+sum+1));
            else
                rez=rez+1LL*min(max(0,nrb-sum+1),nrc+1);
        }
        else
        {
            if(vb*sum<0 || nrb+nrc<vb*sum)
                continue;
            aux=vb*sum;
            aux-=nrb;
            aux=max(aux,0);
            rez=rez+1LL*min(nrc-aux+1,min(nrb,sum)+1);
        }
        sum=sum+va*i;
    }
    fo<<rez<<"\n";
    fi.close();
    fo.close();
    return 0;
}