#include <fstream>
#include <algorithm>
#include <vector>
#define DIM 500010
#define INF 2000000000
using namespace std;
ifstream cin ("date.in");
ofstream cout ("date.out");
vector <int> a,x,v,sol;
pair <int,int> aint[4*DIM];
int n,q,i,nr;
int w[DIM*2],qry[DIM];
void lazy (int nod, int st, int dr){
if (!aint[nod].second)
return;
aint[nod].first += aint[nod].second;
if (st != dr){ /// nu e frunza
aint[nod<<1].second += aint[nod].second;
aint[(nod<<1)|1].second += aint[nod].second;
}
aint[nod].second = 0;
}
void update (int nod, int st, int dr, int x, int y, int val){
lazy (nod,st,dr);
if (x <= st && dr <= y){
aint[nod].second += val;
lazy (nod,st,dr);
return;
}
int mid = (st+dr)>>1;
if (x <= mid)
update (nod<<1,st,mid,x,y,val);
if (y > mid)
update ((nod<<1)|1,mid+1,dr,x,y,val);
aint[nod].first = max (aint[nod<<1].first,aint[(nod<<1)|1].first);
}
inline int cautare_binara (int v[], int n, int val){
int st = 1, dr = n;
while (st <= dr){
int mid = (st+dr)>>1;
if (v[mid] == val)
return mid;
if (v[mid] < val)
st = mid+1;
else dr = mid-1;
}}
vector <int> countScans (vector <int> a, vector <int> x, vector <int> v){
int k = 0;
for (int i=0;i<n;i++){
a[i] = a[i]*n+i; /// fac asta ca sa obtin elemente distincte pe care dupa le normalizez
w[++k] = a[i];
}
for (int i=0;i<q;i++){
qry[i] = v[i]*n+x[i];
w[++k] = qry[i];
}
sort (w+1,w+k+1);
int k2 = 1;
for (int i=2;i<=k;i++)
if (w[i] != w[i-1])
w[++k2] = w[i];
k = k2;
update (1,1,k,1,k,-INF); /// initializez cu -INF, apoi adaug INF+i
/// starea initiala
for (int i=0;i<n;i++){
int val = cautare_binara(w,k,a[i]);
update (1,1,k,val,val,INF+i); /// am i puncte mai mici decat el in stanga lui
update (1,1,k,1,val,1);
}
for (int i=0;i<q;i++){
int poz = cautare_binara (w,k,a[x[i]]);
update (1,1,k,1,poz,-1);
update (1,1,k,poz,poz,-INF-x[i]);
a[x[i]] = qry[i];
poz = cautare_binara (w,k,qry[i]);
update (1,1,k,poz,poz,INF+x[i]);
update (1,1,k,1,poz,1);
sol.push_back(aint[1].first - n);
}
return sol;
}
Compilation message
bubblesort2.cpp: In function 'int cautare_binara(int*, int, int)':
bubblesort2.cpp:47:6: warning: control reaches end of non-void function [-Wreturn-type]
}}
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
376 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
376 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
6 ms |
632 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
2 ms |
376 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |