Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
mergesort tree
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
//g++ 5.4.0 #include<bits/stdc++.h> using namespace std; #define pb push_back int lb[100001]={0}; vector<int>tree[100001]; void build(int s,int st,int en) { if(st==en) { tree[s].pb(lb[st]); return; } int mi=st+(en-st)/2; build(2*s,st,mi); build(2*s+1,mi+1,en); tree[s].resize(tree[2*s].size()+tree[2*s+1].size()); merge(tree[2*s].begin(),tree[2*s].end(),tree[2*s+1].begin(),tree[2*s+1].end(),tree[s].begin()); } int query(int s,int st,int en,int l,int r,int k) { if(st>r || en<l) return 0; if(l<=st && r>=en) { int d=upper_bound(tree[s].begin(),tree[s].end(),k)-tree[s].begin(); return tree[s].size()-d; } int mi=st+(en-st)/2; int p1=query(2*s,st,mi,l,r,k); int p2=query(2*s+1,mi+1,en,l,r,k); return p1+p2; } int main() { int n; scanf("%d",&n); for(int i=0;i<n;++i) scanf("%d",&lb[i]); build(1,0,n-1); int q; scanf("%d",&q); for(int i=0;i<q;++i) { int l,r,k; scanf("%d %d %d",&l,&r,&k); printf("%d\n",query(1,0,n-1,l-1,r-1,k)); } }
g++
5 5 1 2 3 4 3 2 4 1 4 4 4 1 5 2
Show compiler warnings
[
+
] Compiler args
[
-
]
Show input
Compilation time: 1.53 sec, absolute running time: 0.07 sec, cpu time: 0.02 sec, memory peak: 3 Mb, absolute service time: 1,62 sec
edit mode
|
history
|
discussion
2 0 3