Pagini recente » Cod sursa (job #229340) | Cod sursa (job #2035154) | Cod sursa (job #2858176) | Cod sursa (job #2975543) | Cod sursa (job #223029)
Cod sursa(job #223029)
#include <fstream>
#include <map>
using namespace std;
typedef multimap <int , pair<int,int> > tab_type;
typedef tab_type :: iterator it_type;
int main()
{
ifstream fin("oite.in");
ofstream fout("oite.out");
int N,L,A[1024];
fin>>N>>L;
for(int i = 0; i < N; ++i)
fin>>A[i];
tab_type tab;
for(int i = 0; i < N - 1; ++i)
for(int j = i + 1; j < N; ++j)
tab.insert( make_pair(A[i] + A[j], make_pair(i,j) ) );
int cnt = 0;
for(int i = 0; i < N - 1; ++i)
for(int j = i + 1; j < N; ++j)
if(tab.find(L - A[i] - A[j]) != tab.end() )
{
it_type fi = tab.lower_bound(L - A[i] - A[j]),
la = tab.upper_bound(L - A[i] - A[j]);
for(; fi != la; ++fi )
if( fi -> second . first > j)
++cnt;
}
fout<<cnt;
/*
for(int i = 0; i < N - 1; ++i)
for(int j = i + 1; j < N; ++j)
if(tab.find(A[i] + A[j]) != tab.end() )
{
fout << A[i] + A[j] << "=> ";
//tab[ A[i] + A[j] ] . first << ' ' << tab[ A[i] + A[j] ] . second << endl;;
it_type fi = tab.lower_bound(A[i] + A[j]),
la = tab.upper_bound(A[i] + A[j]);
for(; fi != la; ++fi )
fout << (*fi).second.first << ' ' << (*fi).second.second << endl;
}
*/
return 0;
}