Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("cautbin.in");
- ofstream fout("cautbin.out");
- const int NMAX=100005;
- int n,a[NMAX],query;
- inline void CB_0(int x)
- {
- int st=1,dr=n,mij,poz=-1;
- while(st<=dr)
- {
- mij=(st+dr)/2;
- if(a[mij]==x)
- {
- poz=mij;
- st=mij+1;
- }
- else if(a[mij]<x)
- st=mij+1;
- else dr=mij-1;
- }
- fout<<poz<<"\n";
- }
- inline void CB_1(int x)
- {
- int st=1,dr=n,mij,poz=-1;
- while(st<=dr)
- {
- mij=(st+dr)/2;
- if(a[mij]<=x)
- {
- poz=mij;
- st=mij+1;
- }
- else dr=mij-1;
- }
- fout<<poz<<"\n";
- }
- inline void CB_2(int x)
- {
- int st=1,dr=n,mij,poz=-1;
- while(st<=dr)
- {
- mij=(st+dr)/2;
- if(a[mij]>=x)
- {
- poz=mij;
- dr=mij-1;
- }
- else st=mij+1;
- }
- fout<<poz<<"\n";
- }
- int main()
- {
- fin>>n;
- for(int i=1;i<=n;i++)
- fin>>a[i];
- fin>>query;
- while(query--)
- {
- int op,cer;
- fin>>op>>cer;
- if(!op)
- CB_0(cer);
- else
- {
- if(op==1)
- CB_1(cer);
- else CB_2(cer);
- }
- }
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment