Submission #202010

#TimeUsernameProblemLanguageResultExecution timeMemory
202010SegtreeBubble Sort 2 (JOI18_bubblesort2)C++14
17 / 100
356 ms760 KiB
#include<iostream> #include<algorithm> #include<vector> #include<queue> #include<set> #include<unordered_set> #include<unordered_map> #include"bubblesort2.h" using namespace std; typedef int ll; typedef vector<ll> vll; #define chmax(a,b) a=max(a,b) #define chmin(a,b) a=min(a,b) #define all(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i<n;i++) #define mod 1000000007 #define mad(a,b) a=(a+b)%mod #define N 4010 ll dat[2*N]; void init(){ rep(i,2*N)dat[i]=0; } void upd(ll i,ll x){ i+=N; dat[i]+=x; for(;i;i>>=1)dat[i/2]=dat[i]+dat[i^1]; } ll qry(ll l,ll r){ l+=N,r+=N+1; ll res=0; for(ll a=l,b=r;a<b;a>>=1,b>>=1){ if(a&1)res+=dat[a++]; if(b&1)res+=dat[--b]; } return res; } ll solve(vll a){ //for(auto t:a)cout<<t<<" ";cout<<endl; ll n=a.size(),ans=0; init(); for(int i=0;i<n;i++){ chmax(ans,qry(a[i]+1,N-1)); upd(a[i],1); } return ans; } vll countScans(vll a,vll x,vll v){ ll n=a.size(),q=x.size(); if(n>2000)return a; vll zs; for(auto t:a)zs.push_back(t); for(auto t:v)zs.push_back(t); sort(all(zs)); zs.erase(unique(all(zs)),zs.end()); for(int i=0;i<a.size();i++)a[i]=lower_bound(all(zs),a[i])-zs.begin(); for(int i=0;i<v.size();i++)v[i]=lower_bound(all(zs),v[i])-zs.begin(); vll fans; rep(k,q){ a[x[k]]=v[k]; fans.push_back(solve(a)); } return fans; } /*int main(){ ll n,q; cin>>n>>q; vll a(n),x(q),v(q); rep(i,n)cin>>a[i]; rep(i,q)cin>>x[i]>>v[i]; vll res=countScans(a,x,v); for(auto t:res)cout<<t<<endl; }*/

Compilation message (stderr)

bubblesort2.cpp: In function 'vll countScans(vll, vll, vll)':
bubblesort2.cpp:56:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<a.size();i++)a[i]=lower_bound(all(zs),a[i])-zs.begin();
                 ~^~~~~~~~~
bubblesort2.cpp:57:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<v.size();i++)v[i]=lower_bound(all(zs),v[i])-zs.begin();
                 ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...