Cod sursa(job #1523285)

Utilizator OlivianOlivian Dan Cretu Olivian Data 12 noiembrie 2015 16:16:52
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,s,p,sum,ct=0,v[105];
bool da=0;
int cautbin(int val)
{
    int step=(1<<18), start = 0;
    for(;step;step>>=1)
    {
        int index=step+start;
        if(index>n) continue;
        if(v[index]<=val)
        start=index;
    }
    return start;
}
struct adevarat
{
    int suma,x,y,z;
};
adevarat v1[105];

bool comp(adevarat a,adevarat b)
{
    if(a.suma>b.suma)
        return 0;
    else return 1;
}

int main(){
    freopen("loto.in", "r", stdin);
    freopen("loto.out", "w", stdout);
    scanf("%d %d",&n,&s);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=n;++k)
            {
                ct++;
                v1[ct].x=i;
                v1[ct].y=j;
                v1[ct].z=k;

            }
        }
    }
    sort(v1+1,v1+ct+1, comp);
     for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=n;++k)
            {
                sum=i+j+k;
                p=s-sum;
                int da=cautbin(p);
                if(da==p)
                {
                    da=1;
                    printf("%d %d %d %d %d %d",i,j,k,v1[ct].x,v1[ct].y,v1[ct].z );
                    break;
                }


            }
        }
    }
    if(da==0) printf("-1");

}