Cod sursa(job #2621102)

Utilizator pascustefanPascu Stefan Liviu pascustefan Data 30 mai 2020 12:36:59
Problema Loto Scor 5
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.54 kb
#include <iostream>
#include <fstream>
using namespace std;

struct suma {
    int a, b, c, s;
} sum[1000005];

void quick_sort(int s, int d) {
    int i, j, i1, j1, c, k;
    if (s < d) {
        i = s;
        j = d;
        i1 = 0;
        j1 = -1;
        while (i < j) {
            if (sum[i].s > sum[j].s) {
                c = sum[i].s;
                sum[i].s = sum[j].s;
                sum[j].s = c;
                c = i1;
                i1 = -j1;
                j1 = -c;
            }
            i = i + i1;
            j = j + j1;
        }
        k = i;
        quick_sort(s, k - 1);
        quick_sort(k + 1, d);
    }
}

int main() {
    ifstream f("loto.in");
    ofstream g("loto.out");
    int n,  v[101], S, ok = 0, nr = 0, i, j, k;
    f>>n>>S;
    for(i = 1; i <= n; i++)
        f>>v[i];

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

    quick_sort(1, nr);
    i = 1;
    j = nr;
    while(i <= j) {
        if(sum[i].s + sum[j].s == S) {
            ok = 1;
            g<<sum[i].a<<" "<<sum[i].b<<" "<<sum[i].c<<" "<<sum[j].a<<" "<<sum[j].b<<" "<<sum[j].c;
            break;
        } else if(sum[i].s + sum[j].s < S)
                i++;
            else
                j--;
    }

    if(ok == 0)
        g << -1;
    return 0;
}