Cod sursa(job #2669630)

Utilizator IoanMihaiIoan Mihai IoanMihai Data 7 noiembrie 2020 13:30:17
Problema Loto Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int n, s, cnt, a[105];
struct loto{
    int s, x1, x2, x3;
}suma[1000005];
bool comp(loto w, loto z)
{
    return w.s > z.s;
}
int main() {
    fin >> n >> s;
    for (int i=1;i<=n;i++){
        fin >> a[i];
    }

    for (int i=1;i<=n;i++){
        for (int j=i;j<=n;j++){
            for (int k=j;k<=n;k++){
                suma[++cnt].s = a[i] + a[j] + a[k];
                suma[cnt].x1 = a[i];
                suma[cnt].x2 = a[j];
                suma[cnt].x3 = a[k];
            }
        }
    }
    sort(suma+1, suma+cnt+1, comp);
    for (int i=1;i<=cnt;i++){
        int s1 = s - suma[i].s;
        int st = 1, dr = cnt;
        while(st <= dr){
            int mijloc = (st+dr)/2;
            if (suma[mijloc].s == s1){
                fout << suma[i].x1 << " " << suma[i].x2 << " " << suma[i].x3 << " ";
                fout << suma[mijloc].x1 << " " << suma[mijloc].x2 << " " << suma[mijloc].x3 << '\n';
                return 0;
            }
            if (suma[mijloc].s > s1){
                dr = mijloc-1;
            }else{
                st = mijloc+1;
            }
        }
    }
    fout << -1 << '\n';
    return 0;
}