Cod sursa(job #2142857)

Utilizator Cosmin-MihaiGheorghe Mihai-Cosmin Cosmin-Mihai Data 25 februarie 2018 13:11:30
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,a[101],nr,s;
struct structura {
    int x,y,z;
};
structura v[1000001];
bool comp(structura a,structura b) {
    if(a.x+a.y+a.z<b.x+b.y+b.z)return 1;
    return 0;
}
int main() {
    f>>n>>s;
    for(int i=1; i<=n; i++) {
        f>>a[i];
    }
    for(int i=1; i<=n; i++) {
        for(int i2=i; i2<=n; i2++) {
            for(int i3=i2; i3<=n; i3++) {
                v[++nr].x=a[i];
                v[nr].y=a[i2];
                v[nr].z=a[i3];
            }
        }
    }
    sort(v+1, v+nr+1,comp);
    //for(int i=1;i<=nr;i++)cout<<v[i].x<<" "<<v[i].y<<" "<<v[i].z<<"\n";
    for(int i=1; i<=nr; i++) {
        int st=1;
        int dr=nr;
        while(st!=dr) {
            int mij=(st+dr)/2;
            if(v[i].x+v[i].y+v[i].z+v[mij].x+v[mij].y+v[mij].z<s) {
                st=mij+1;
            } else {
                dr=mij;
            }
        }
        if(v[i].x+v[i].y+v[i].z+v[st].x+v[st].y+v[st].z==s) {
            g<<v[i].x<<" "<<v[i].y<<" "<<v[i].z<<" "<<v[st].x<<" "<<v[st].y<<" "<<v[st].z<<'\n';
            return 0;
        }
    }
    g<<"-1"<<'\n';
    return 0;
}