Cod sursa(job #856912)

Utilizator btamasyaBorsos Tamas btamasya Data 17 ianuarie 2013 08:30:32
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;
int l,t[1000],u[1000],k,n,p,mini=1300, qmini=10000000;
void megold (int i,int p,int q)
{
    int j;
    if(i<n)
    {
        if (t[i]==0 && u[i]==0) megold(i+1,p+1,q);
        else if (u[i]==0)
        {
            for(j=1;j<=t[i];j++)
                if(i+j<=n)megold(i+j,p+1,q);
        }
        else if (t[i]==0)
        {
             for(j=1;j<=u[i];j++)
                if(i+2*j<=n)megold(i+2*j,p+1,q+j);
        }
        else
        {
            for(j=1;j<=t[i];j++)
                if(i+j<=n)megold(i+j,p+1,q);
            for(j=1;j<=u[i];j++)
                if(i+2*j<=n) megold(i+2*j,p+1,q+j);
        }
    }
    if(i==n)
    {
        if(mini>p) { mini=p;qmini=q;}
        else if (mini==p&&q<qmini) qmini=q;
    }
}
int main()
{
    int i,a,b;
    fstream f,g;
    f.open("scara3.in", ios::in);
    f>>n;
    f>>k;
    for(i=0;i<k;i++)
    {
        f>>a>>b;
        t[a]=b;
    }
    f>>l;
    for(i=0;i<l;i++)
    {
        f>>a>>b;
        u[a]=b;
    }
    megold(0,0,0);
    g.open("scara3.out",ios::out);
    g<<mini<<" "<<qmini;
    return 0;
}