Nu aveti permisiuni pentru a descarca fisierul grader_test2.ok
Cod sursa(job #3297970)
| Utilizator | Data | 25 mai 2025 10:46:42 | |
|---|---|---|---|
| Problema | Cautare binara | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.19 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
const int nmax=2e5+5;
int n, v[nmax];
int cb0 (int n, int x)
{
int origin=0;
for (int p=(1<<17); p; p>>=1)
{
if (origin+p<=n && v[origin+p]<=x)
origin+=p;
}
if (v[origin]==x)
return origin;
return -1;
}
int cb1 (int n, int x)
{
int origin=0;
for (int p=(1<<17); p; p>>=1)
{
if (origin+p<=n && v[origin+p]<=x)
origin+=p;
}
if (v[origin]==x)
return origin;
return origin+1;
}
int cb2 (int n, int x)
{
int origin=0;
for (int p=(1<<17); p; p>>=1)
{
if (v[origin+p]<x && v[origin+p]!=0)
origin+=p;
}
return origin+1;
}
int main()
{
fin >> n;
for (int i=1; i<=n; i++)
fin >> v[i];
int q;
fin >> q;
for (int i=1; i<=q; i++)
{
int cer, x;
fin >> cer >> x;
if (cer==0)
fout << cb0(n,x) << '\n';
if (cer==1)
fout << cb1(n,x) << '\n';
if (cer==2)
fout << cb2(n,x) << '\n';
}
return 0;
}
