Cod sursa(job #2039305)

Utilizator alex2209alexPavel Alexandru alex2209alex Data 14 octombrie 2017 13:22:02
Problema Secventa 3 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <fstream>

using namespace std;
ifstream f("secv3.in");
ofstream g("secv3.out");
int n,ap[30001],v[30001],s1,s2,a[30001],b[30001],mi,ma,l,sma,sma2,sma3;
bool valid()
{
    int i;
    for(i=1; i<=n;i++)
    {
        ap[i]=0;
    }
    i=1;
    while(v[i]!=0)
    {
        ap[v[i]]++;
        if(ap[v[i]]==2)
        {
            return false;
        }
        i++;
    }
    if(i<mi+1)
    {
        return false;
    }
    return true;
}
int calcul()
{
    int i=1;
    int s1=0;
    int s2=0;
    while(v[i]!=0)
    {
        s1=s1+a[v[i]];
        s2=s2+b[v[i]];
        i++;
    }
    //g<<s1/s2<<"."<<s1%s2*10/s2<<s1%s2*10%s2*10/s2<<'\n';
    if(s1/s2>sma)
    {
        sma=s1/s2;
        sma2=s1%s2*10/s2;
        sma3=s1%s2*10%s2*10/s2;
    }
    else if(s1/s2==sma)
    {
        if(s1%s2*10/s2>sma2)
        {
            sma2=s1%s2*10/s2;
            sma3=s1%s2*10%s2*10/s2;
        }
        else if(s1%s2*10/s2==sma2)
        {
            sma3=max(sma3,s1%s2*10%s2*10/s2);
        }
    }
}
int permut()
{
    v[1]++;
    int i=1;
    if(v[i]==n+1)
    {
        l++;
    }
    while(v[i]>n)
    {
        v[i]=l;
        v[i+1]++;
        i++;
    }
    if(i==ma+1)
    {
        return 0;
    }
    else if(valid())
    {
        calcul();
    }
    return permut();
}
int main()
{
    f>>n>>mi>>ma;
    for(int i=1; i<=n; i++)
    {
        f>>a[i];
    }
    for(int i=1; i<=n; i++)
    {
        f>>b[i];
    }
    l=0;
    permut();
    g<<sma<<"."<<sma2<<sma3<<'\n';
    return 0;
}