Cod sursa(job #3337659)

Utilizator mhyasdArdelean Mihai mhyasd Data 29 ianuarie 2026 12:53:35
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int sume[1000001];
int v[101];

int main()
{
    int n,s,p=0,sum1,sum2,st,dr,mij,x,ras,cnt=-1;
    fin>>n>>s;
    for(int i=1;i<=n;i++) {
        fin>>v[i];
    }
    for(int i=1;i<=n;i++) {
        for(int j=i;j<=n;j++) {
            for(int k=j;k<=n;k++) {
                sume[++p]=v[i]+v[j]+v[k];
            }
        }
    }
    sort(sume+1,sume+p+1);
    for(int i=1;i<=p;i++) {
        x=s-sume[i];
        if(x<0) break;
        st=1;
        dr=p;
        ras=p+1;
        while(st<=dr) {
            mij=(st+dr)/2;
            if(v[mij]>=x) {
                ras=mij;
                dr=mij-1;
            }
            else st=mij+1;
        }
        if(v[ras]==x) {
            sum1=sume[i];
            sum2=x;
            cnt=1;
            break;
        }
    }
    if(cnt==-1) fout<<-1;
    else {
        for(int i=1;i<=n;i++) {
            if(cnt==2) break;
            for(int j=i;j<=n;j++) {
                if(cnt==2) break;
                for(int k=j;j<=n;k++) {
                    if(v[i]+v[j]+v[k]==sum1) {
                        fout<<i<<" "<<j<<" "<<k<<" ";
                        cnt=2;
                        break;
                    }
                }
            }
        }
        for(int i=1;i<=n;i++) {
            if(cnt==3) break;
            for(int j=i;j<=n;j++) {
                if(cnt==3) break;
                for(int k=j;j<=n;k++) {
                    if(v[i]+v[j]+v[k]==sum2) {
                        fout<<i<<" "<<j<<" "<<k<<" ";
                        cnt=3;
                        break;
                    }
                }
            }
        }
    }
    return 0;
}