Submission #146192

#TimeUsernameProblemLanguageResultExecution timeMemory
146192nicolaalexandraBubble Sort 2 (JOI18_bubblesort2)C++14
0 / 100
6 ms632 KiB
#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 (stderr)

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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...