Pagini recente » Cod sursa (job #7638) | Cod sursa (job #668250) | Cod sursa (job #2581297) | Cod sursa (job #709677) | Cod sursa (job #595794)
Cod sursa(job #595794)
/***************************************************
* Author: Alexandru Palcuie
* Country: Romania
* Email: alex [dot] palcuie [at] gmail [dot] com
* Website: http://palcu.blogspot.com/
* Year: 2011
****************************************************/
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
using namespace std;
typedef vector<int> VI;
typedef vector<pair<int,int> > VPI;
typedef pair<int,int> PII;
typedef long long LL;
typedef unsigned long long ULL;
//Constants
const int NMAX = 1024;
//Global Vars
pair<int,int> v[NMAX];
//Structs
//Solve Functions
inline bool sortMethod(PII a, PII b){
return a.second < b.second;
}
inline bool myBinarySearch(int left, int right, int value){
int mid;
while(left<=right){
mid = (left+right) / 2;
if (v[mid].second <= value)
return true;
if (v[mid].second<value){
left = mid+1;
}
else{
right = mid-1;
}
}
return false;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
#endif
int n; scanf("%d",&n); int i,j,x,sol=0;
for(i=1;i<=n;++i){
scanf("%d",&x);
v[i].first=i;
v[i].second=x;
}
sort(v+1,v+n+1,sortMethod);
for(i=1;i<=n;++i){
for(j=i+1;j<=n;++j){
x=v[i].second+v[j].second;
if (myBinarySearch(j+1,n,x))
++sol;
}
}
printf("%d\n",sol);
return 0;
}