Pagini recente » Cod sursa (job #560701) | Cod sursa (job #967324) | Cod sursa (job #2142397) | Cod sursa (job #1932770) | Cod sursa (job #2590074)
//#include <fstream>
//#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
const int N=110;
const int NN=1000010;
int n,s,v[N],nr;
vector <tuple<int,int,int,int>> t;
int main()
{
//FILE *fin,*fout;
// fin=fopen("stramosi.in","r");
//fout=fopen("stramosi.out","w");
//fscanf(fin,"%d%d",&n,&m);int
f>>n>>s;
for(int i=1;i<=n;i++)
f>>v[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(i+j+k<s)
{
t.push_back(make_tuple(i+j+k,i,j,k));
nr++;
}
sort(t.begin(),t.end());
for(int i=0;i<nr;i++)
{
int sum,a,b,c;
tie(sum,a,b,c)=t[i];
int ramas=s-sum;
int lo=0,hi=nr-1;
//int mij=lo+(hi-lo)/2;
while(lo<hi)
{
int mij=lo+(hi-lo)/2;
int sumnou,anou,bnou,cnou;
tie(sumnou,anou,bnou,cnou)=t[mij];
if(sumnou==ramas)
{
g<<a<<' '<<b<<' '<<c<<' '<<anou<<' '<<bnou<<' '<<cnou;
return 0;
}
else if(sumnou<ramas)
lo=mij+1;
else hi=mij-1;
}
}
g<<-1;
return 0;
}