Pagini recente » Cod sursa (job #1209216) | Cod sursa (job #1837634) | Cod sursa (job #689841) | Cod sursa (job #2969825) | Cod sursa (job #607504)
Cod sursa(job #607504)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
int C,L;
int wool[1030];
char sir[1030];
char *p = sir;
void read(int &x)
{ x = 0;
while(*p >= '0' && *p <= '9')
x = x * 10 + *p - '0' , p++;
if(*p == ' ') p++;
}
bool bin_search(int st,int dr,int val,int &nr)
{ int mid,poz,ok = 0;
nr = 0;
while(st <= dr && !ok)
{ mid = (st + dr) / 2;
if(val < wool[mid])
dr = mid - 1;
else if(val > wool[mid])
st = mid + 1;
else ok = 1;
}
if(ok == 0) return 0;
nr = 1;
for(int i = mid - 1; i >= 1; i--)
if(wool[i] == val) nr++;
for(int i = mid + 1; i <= C; i++)
if(wool[i] == val) nr++;
return 1;
}
int main()
{ int i,j,k,nr;
long long nr_pos = 0;
f.getline(sir,1030);
read(C); read(L);
f.getline(sir,1030); p = sir;
for(i = 1; i <= C; i++)
read(wool[i]);
sort(wool + 1, wool + C + 1);
for(i = 1; i <= C; i++)
for(j = i + 1; j <= C; j++)
for(k = j + 1; k <= C; k++)
if(bin_search(k + 1,C,L - wool[i] - wool[j] - wool[k],nr))
nr_pos += nr;
g<<nr_pos;
f.close();
g.close();
return 0;
}