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);
                             ^