Submission #430517

#TimeUsernameProblemLanguageResultExecution timeMemory
430517kimbj0709역사적 조사 (JOI14_historical)C++14
40 / 100
4009 ms13752 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define maxn 100050 #define sqrtn 320 #define f first #define s second vector<int> seg(maxn*4,0); vector<int> num(maxn,0); vector<int> compress; vector<int> vect1; vector<int> ans(maxn,0); vector<vector<pair<int,pair<int,int> > > > queries(sqrtn); void build(int node,int start,int end){ if(start==end){ seg[node] = start; return; } int mid = (start+end)/2; build(node*2+1,start,mid);build(node*2+2,mid+1,end); seg[node] = seg[node*2+1]; } void update(int node,int start,int end,int pos,int val){ if(start==end){ num[start] += val; return; } int mid = (start+end)/2; if(pos<=mid){ update(node*2+1,start,mid,pos,val); } else{ update(node*2+2,mid+1,end,pos,val); } if(num[seg[node*2+1]]>=num[seg[node*2+2]]){ seg[node] = seg[node*2+1]; } else{ seg[node] = seg[node*2+2]; } } int32_t main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n,m; int input; cin >> n >> m; for(int i=0;i<n;i++){ cin >> input; compress.push_back(input); vect1.push_back(input); } build(0,0,n-1); sort(compress.begin(),compress.end()); for(int i=0;i<n;i++){ vect1[i] = lower_bound(compress.begin(),compress.end(),vect1[i])-compress.begin(); } int a,b; for(int i=0;i<m;i++){ cin >> a >> b; a--,b--; queries[a/sqrtn].push_back({b,{a,i}}); } int l = 0,r = -1; for(int i=0;i<sqrtn;i++){ sort(queries[i].begin(),queries[i].end()); for(auto k:queries[i]){ while(l>k.s.f){ l--; update(0,0,n-1,vect1[l],compress[vect1[l]]); } while(l<k.s.f){ update(0,0,n-1,vect1[l],-compress[vect1[l]]); l++; } while(r<k.f){ r++; update(0,0,n-1,vect1[r],compress[vect1[r]]); } while(r>k.f){ update(0,0,n-1,vect1[r],-compress[vect1[r]]); r--; } ans[k.s.s] = num[seg[0]]; } } for(int i=0;i<m;i++){ cout << ans[i] << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...