Language: C++

#include<iostream>
#include<vector>

using namespace std;

using T = long long;
struct BinaryIndexedTree{
private:
    vector<T> vect;
    const int n;
public:
    BinaryIndexedTree(int _n) : vect(_n + 1, 0), n(_n) {}

    T sum(int i) {
        i++;
        T s = 0;
        while( i > 0){
            s += vect[i];
            i -= i & (-i);
        }
        return s;
    }
    //[i,j) 外からは0index
    T sum(int i, int j) {
        T ret_i = sum(i);
        T ret_j = sum(j);
        return ret_j - ret_i;
    }
    void add(int i, T x) {
        i++;
        while(i <= n) {
            array[i] += x;
            i += i & (-i);
        }
    }
};

int main () {
    int n,q;
    cin >> n >> q;
    BinaryIndexedTree bit(n);
    int c,x,y;

    for(int i=0; i<q ; i++){
        cin >> c;
        if( c==0 ){
            cin >> x >> y;
            x--;
            bit.add(x,y);
        }else{
            cin >> x >> y;
            x--;
            cin >> bit.sum(x,y) >> endl;
        }
    } 

    return 0;
}



Compiler output:
a.cc: In member function 'void BinaryIndexedTree::add(int, T)':
a.cc:32:22: error: expected initializer before '+=' token
   32 |             array[i] += x;
      |                      ^~
a.cc:32:22: error: expected ';' before '+=' token
a.cc: In function 'int main()':
a.cc:53:17: error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} and 'T' {aka 'long long int'})
   53 |             cin >> bit.sum(x,y) >> endl;
      |             ~~~ ^~ ~~~~~~~~~~~~
      |             |             |
      |             |             T {aka long long int}
      |             std::istream {aka std::basic_istream<char>}
In file included from /usr/include/c++/14/iostream:42,
                 from a.cc:1:
/usr/include/c++/14/istream:170:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:170:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'bool&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:174:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:174:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'short int&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:177:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:177:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'short unsigned int&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:181:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:181:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'int&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:184:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:184:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'unsigned int&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:188:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:188:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'long int&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:192:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:192:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'long unsigned int&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  199 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:199:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'long long int&' to an rvalue of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:203:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  203 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:203:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'long long unsigned int&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:219:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  219 |       operator>>(float& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:219:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'float&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:223:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  223 |       operator>>(double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:223:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'double&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:227:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  227 |       operator>>(long double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:227:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: cannot bind non-const lvalue reference of type 'long double&' to a value of type 'T' {aka 'long long int'}
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
/usr/include/c++/14/istream:328:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  328 |       operator>>(void*& __p)
      |       ^~~~~~~~
/usr/include/c++/14/istream:328:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: invalid conversion from 'T' {aka 'long long int'} to 'void*' [-fpermissive]
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
      |                           |
      |                           T {aka long long int}
a.cc:53:27: error: cannot bind rvalue '(void*)bit.BinaryIndexedTree::sum(x, y)' to 'void*&'
/usr/include/c++/14/istream:122:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__istream_type& (*)(__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  122 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:122:7: note:   conversion of argument 1 would be ill-formed:
a.cc:53:27: error: invalid conversion from 'T' {aka 'long long int'} to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'} [-fpermissive]
   53 |             cin >> bit.sum(x,y) >> endl;
      |                    ~~~~~~~^~~~~
      |                           |
      |                           T {aka long long int}
/usr/include/c++/14/istream:126:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operat