Can someone please tell why I am unable to compile the following program:
#include<iostream>
#include<string>
#include<cmath>
#include<iostream>
#include<cfloat>
#define MOD 10000009
using namespace std;
double distance(pair<int,int> p1,pair<int,int> p2)
{
double dist;
dist = sqrt( (p1.first-p2.first)*(p1.first-p2.first) + (p1.second-p2.second)*(p1.second-p2.second) );
return(dist);
}
int main()
{
int N,i,j;
cin >> N;
pair<int,int> pi[N];
for(i=0;i<N;i++)
{
cin >> pi[i].first >> pi[i].second;
}
for(i=0;i<N;i++)
{
cout << pi[i].first << " "<< pi[i].second << endl;
}
distance(pi[0],pi[1]); // This line is giving error
return 0;
}

distanceis defined by the standard library, which you alreadyusing‘ed into the global namespace, so it’s trying to use that one rather than the one you wrote (and expected).Call your function something else to avoid the name clash.
Also just as style notes, in C++ code
#definecan usually be replaced with const or inline functions to provide much greater type safety, and I like to writeusing std::cout, etc for each item I need rather thanusing namespace std.