Cod sursa(job #1848622)

Utilizator DobosDobos Paul Dobos Data 16 ianuarie 2017 12:50:10
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#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;
}