diff --git a/dquery.cpp b/dquery.cpp new file mode 100644 index 0000000..fda1fbc --- /dev/null +++ b/dquery.cpp @@ -0,0 +1,172 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +#define FOR(i,n,m) for(int i=n; im; i--) +#define pb push_back +#define ll long long + + +/*-------------------------------------------------------------------------------------------------------------------------------------- +--------------------------------------------------------------------------------------------------------------------------------------*/ +int a[1000000]; +int n; +struct nodost +{ + int sum; +}; +nodost nodo[1000000]; + +struct query +{ + int l,r,id; + + bool operator <(query b){ + return r med) + return getsum(2*indexst+1, med+1, right, l, r); + if (r <= med) + return getsum(2*indexst, left, med, l, r); + + nodost lresp = getsum(2*indexst, left, med, l, med); + nodost rresp = getsum(2*indexst+1, med+1, right, med+1, r); + nodost result= merge(lresp, rresp); + + return result; +} + +void fix(int r,int u){ + // + ROF(i,u,r){ + int x=b[i].next; + if(x>0){ + a[x]=1; + update(x,1,n,1); + } + } +} + +int main(){ + + ios_base::sync_with_stdio(false); + cin.tie(NULL); + + cin>>n; int c; + + FOR(i,1,n+1){ + + cin>>c; + + b[i]={c,ant[c]}; + ant[c]=i; + + } + + memset(ant,-1, sizeof ant); + //arreglar array a + ROF(i,n,0){ + if(ant[b[i].val]==-1){ + a[i]=1; + ant[b[i].val]=1; + }else a[i]=0; + } + + //hacer segment tree + buildst(1,n,1); + int m; + cin>>m; + int l,r,ract=n; + int re[m]; + + FOR(i,0,m){ + cin>>l>>r; + querys[i]={l,r,i}; + } + + sort(querys,querys+m); + + ROF(i,m-1,-1){ + int r=querys[i].r, l=querys[i].l, id=querys[i].id; + if(r