Cod sursa(job #1514398)

Utilizator transparentulAlexandra Alexiu transparentul Data 31 octombrie 2015 10:06:01
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <cstdio>
#include<algorithm>
FILE *f=fopen("loto.in","r");
FILE *g=fopen("loto.out","w");

using namespace std;

struct sume
{
    int a,b,c,sum;
};

int i,n,s,v[101],j,k,nr,poz,ok;
sume x[10000001];

int compare(sume x1,sume x2)
{
    return (x1.sum<x2.sum);
}
int compara (sume x1,int t)
{
    return (x1.sum<=t);
}
int main()
{
    fscanf(f,"%d %d",&n,&s);
    for (i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);

    nr=0;
    for (i=1;i<=n;i++)
        for (j=i;j<=n;j++)
            for (k=j;k<=n;k++)
                {
                    nr++;
                    x[nr].a=i;
                    x[nr].b=j;
                    x[nr].c=k;
                    x[nr].sum=i+j+k;
                }

    sort(x+1,x+nr+1,compare);

    //for (i=1;i<=nr;i++)        fprintf(g,"%d ",x[i].sum);
    //fprintf(g,"\n");

    ok=-1;

    for (i=1;i<=nr;i++)
    {
        //poz=det(s-x[i].sum);
        //fprintf(g,"%d ",s-x[i].sum);
        poz=lower_bound(x+1,x+nr+1,s-x[i].sum,compara)-x-1;
       //fprintf(g,"%d\n",poz);
        if (x[poz].sum==s-x[i].sum)
        {
            fprintf(g,"%d %d %d %d %d %d",x[i].a,x[i].b,x[i].c,x[poz].a,x[poz].b,x[poz].c);
            ok=1;
            break;
        }
    }
    if (ok==-1) fprintf(g,"%d",ok);

    fclose(f);
    fclose(g);
}