Pagini recente » Cod sursa (job #1212847) | Cod sursa (job #14332) | Cod sursa (job #1568388) | Cod sursa (job #1632795) | Cod sursa (job #662281)
Cod sursa(job #662281)
#include<iostream>
#include<fstream>
#include<cstring>
#define lmax 1000
using namespace std;
ifstream f("cautbin.in",fstream::in);
ofstream g("cautbin.out",fstream::out);
unsigned int a[lmax],n,m;
int search(short int o,short int x)
{unsigned int st,dr,m,loc=-1,lol;
st=1;
dr=n;
m=(st+dr)/2;
while(st<=dr)
{ if(a[m]==x)
loc=m,st=dr+1;
else
if(a[m]<x)
{st=m+1;
m=(st+dr)/2;
}
else
{dr=m-1;
m=(st+dr)/2;
}
}
if(loc!=-1)
{ if(o==0)
{ lol=a[loc];
while(a[loc]==lol &&loc<=n)
loc++;
}
else
if(o==1)
{lol=a[loc];
while(a[loc]==lol && loc>=1)
loc--;
if(loc>1)
loc--;
}
else
if(o==2)
{lol=a[loc];
while(a[loc]==lol && loc<=n)
loc+=1;
if(loc<n)
loc+=1;
}
}
return loc;
}
void read()
{unsigned int i,o,x;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
f>>m;
for(i=1;i<=m;i++)
{f>>o>>x;
cout<<search(o,x)<<"\n";
}
}
int main()
{read();
f.close();
g.close();
return 0;
}