Pagini recente » Cod sursa (job #3335669) | Cod sursa (job #3310673) | Cod sursa (job #3337876) | Cod sursa (job #3330508) | Cod sursa (job #1848622)
#include <bits/stdc++.h>
#define NMAX 1000005
using namespace std;
ifstream fin("eliminare.in");
ofstream fout("eliminare.out");
struct sol{
int s,p;
};
sol V[4 * NMAX];
int S[NMAX],Vl[4 * NMAX];
bitset < NMAX > B;
inline void buildtree(int nod,int L,int R){
if(L == R){
V[nod].s = S[l];
V[nod].p = l;
return;
}
int mid = (L + R) / 2;
buildtree(2 * nod,L,mid);
buildtree(2 * nod + 1,mid + 1,R
if(V[2 * nod].s >= V[2 * nod + 1].s)
V[nod].s = V[2 * nod].s,V[nod].p = V[2 * nod].p;
else
V[nod].s = V[2 * nod + 1].s,V[nod].p = V[2 * nod + 1].p;
}
inline void Search(int nod,int L,int R,int m,int M,int &p){
if(L >= m && R <= M && V[p] < V[nod]){
p = nod;
}
int mid = (L + R)/2;
if(mij >= m)
Search(2 * nod,L,mij,m,M,p);
if(mij < M)
Search(2 * nod + 1,mij + 1,R,m,M,p);
}
int main()
{
ios :: sync_with_stdio(false);
fin.tie(NULL);
int n,m,p;
fin >> n >> m;
for(int i = 1; i <= n; i++)
fin >> S[i];
buildtree(1,1,n);
for(int i = 1; i <= m; i++){
fin >> x >> y;
Search(1,1,n,x,y,p);
}
return 0;
}