Submission #2576992
Source Code Expand
#include<bits/stdc++.h> using namespace std; // semi-open Range minimum query struct RSQ{ int n=(1<<18),data[(1<<18)]; RSQ(){ memset(data,0,sizeof(data)); } // 1 index void add(int i,int v){ while(i<=n){ data[i]+=v; i+=i&-i; } } // 0 index void add(int i,int v){ i++; while(i<=n){ data[i]+=v; i+=i&-i; } } int sum(int i){ int res=0; while(i>0){ res+=data[i]; i-=i&-i; } return res; } //[a,b) 1indexed int sum(int x,int y){ return sum(y-1)-sum(x-1); } //[a,b) 0indexed int sum(int x,int y){ return sum(y)-sum(x); } //K番目に小さい値 int K_number(int k){ int l = 0,r = (1<<18)+1; while( l < r ) { int mid = (l+r) / 2; if( sum( 1 , mid+1 ) >= k ) r = mid; else l = mid+1; } return l; } //K番目に大きい値 int K_L_number(int k){ int p=sum(1,(1<<18)); return K_number(p-k+1); } }; int main(){ RSQ a; int c,x,y,n,q; cin>>n>>q; for(int i=0;i<q;i++){ scanf("%d%d%d",&c,&x,&y); if(c)cout<<a.sum(x,y+1)<<endl; else a.add(x,y); } }
Submission Info
Submission Time | |
---|---|
Task | B - 特別賞 |
User | c7c7 |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1201 Byte |
Status | CE |
Compile Error
./Main.cpp:19:8: error: ‘void RSQ::add(int, int)’ cannot be overloaded void add(int i,int v){ ^ ./Main.cpp:12:8: error: with ‘void RSQ::add(int, int)’ void add(int i,int v){ ^ ./Main.cpp:39:7: error: ‘int RSQ::sum(int, int)’ cannot be overloaded int sum(int x,int y){ ^ ./Main.cpp:35:7: error: with ‘int RSQ::sum(int, int)’ int sum(int x,int y){ ^ ./Main.cpp: In function ‘int main()’: ./Main.cpp:65:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d%d",&c,&x,&y); ^