Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- using namespace std;
- long long bforb(long long arr[],const long long n,long long minn,long long item,long long maXs){
- long long guess,low,high,mid;
- low=minn+1;
- high=maXs;
- mid=(low+high)/2;
- guess=arr[mid];
- while(low<=high){
- mid=(low+high)/2;
- guess=arr[mid];
- if(guess==item){
- return 1;
- }
- else if(guess>item){
- high=mid-1;
- }
- else{
- low=mid+1;
- }
- }
- return 0;
- }
- void draw(long long arr[],const long long n){
- cout<<endl<<endl;
- for(long long i = 0;i<n;i++){
- cout<<arr[i]<<" ";
- }
- cout<<endl<<endl;
- }
- long long SPbsearch(long long arrq[],const long long n, long long item){
- long long low,high,mid,guess,Count=0;
- Count=0;
- low=0;
- high=n-1;
- mid=(low+high)/2;
- guess=arrq[mid];
- while(low<=high){
- mid=(low+high)/2;
- guess=arrq[mid];
- if(guess==item){
- for(long long i=mid;i<n;i++){
- // cout<<endl<<endl<<" "<<arrq[i]<<endl<<endl;
- if(arrq[i]!=item){
- break;
- }
- if(bforb(arrq,n,i,item,n-1)==1){
- Count++;
- }
- }
- for(long long i=mid;;i--){
- //cout<<endl<<endl<<" "<<arrq[i]<<endl<<endl;
- if(arrq[i]!=item){
- break;
- }
- if(bforb(arrq,n,-1,item,i)==1){
- Count++;
- }
- }
- if(Count>0){
- return Count;
- }
- else {
- return 0;
- }
- }
- else if(guess>item){
- high=mid-1;
- }
- else{
- low=mid+1;
- }
- }
- return Count;
- }
- int main()
- {
- long long n,m;
- cin>>n;
- long long arr[n];
- for(long long i=0;i<n;i++){
- cin>>arr[i];
- }
- cin>>m;
- long long arrm[m];
- for(long long i=0;i<m;i++){
- cin>>arrm[i];
- }
- //draw(arrm,m);
- //draw(arr,n);
- for(long long i=0;i<m;i++){
- cout<<SPbsearch(arr,n,arrm[i])<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement