Pagini recente » Istoria paginii utilizator/estiarte | Cod sursa (job #137708) | Rating bielycmok (bielycmok) | Cod sursa (job #499188) | Cod sursa (job #3166537)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n,cnt,i,j,k,aux,x,st,dr,mid,nrdr,CXpos,CYpos,minim[50000],pos,adv;
pair <int,int> clnt[50001];
int upbf(pair <int,int> v[], int l, int x){
int st=0,dr=l-1,mid,poz;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid].first<=x){
poz=mid;
st=mid+1;
} else{
dr=mid-1;
}
}
return poz;
}
int lwbf(pair <int,int> v[], int l, int x){
int st=0,dr=l-1,mid,poz;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid].first>=x){
poz=mid;
dr=mid-1;
} else{
st=mid+1;
}
}
return poz;
}
int main(){
ifstream fin("pachete.in");
ofstream fout("pachete.out");
fin>>n;
fin>>clnt[50000].first>>clnt[50000].second;
for(i=0;i<n;i++){
fin>>clnt[i].first>>clnt[i].second;
}
sort(clnt,clnt+n);
for(i=0;i<n;i++){
minim[i]=abs(clnt[i].first-clnt[50000].first)+abs(clnt[i].second-clnt[50000].second);
}
adv=1;
while(adv==1){
adv=0;
CXpos=clnt[50000].first; CYpos=clnt[50000].second; pos=50000;
while(pos!=aux){
aux=pos;
for(i=0;i<n;i++){
if(clnt[i].first!=-1){
adv=1;
if(minim[i]==(abs(CXpos-clnt[i].first)+abs(CYpos-clnt[i].second))){
CXpos=clnt[i].first;
CYpos=clnt[i].second;
clnt[i].first=-1;
pos=i;
break;
}
}
}
if(pos==aux){
nrdr++;
}
}
}
fout<<nrdr;
fin.close();
fout.close();
return 0;
}