제출 #1324981

#제출 시각아이디문제언어결과실행 시간메모리
1324981dianaSterilizing Spray (JOI15_sterilizing)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int N = 1e5+5;
ll c[N];
int n, q, k, d;

class ST
{
private:
    vector<ll> sum;
public:
    ST(int nn)
    {
        sum.assign(4*N, 0);
    }
    ll add(int i, int l=1, int r=n, int cur=1)
    {
        if(i<l || r<i)  return sum[cur];
        if(l==r)        return sum[cur] = c[i];
        int m=((l+r)>>1), r1=(cur<<1), r2=((cur<<1)|1);
        return sum[cur] = add(i,l,m,r1) + add(i,m+1,r,r2);
    }
    ll get_sum(int lg, int rg, int l=1, int r=n, int cur=1)
    {
        if(r<lg || rg<l)    return 0;
        if(lg<=l && r<=rg)  return sum[cur];
        int m=((l+r)>>1), r1=(cur<<1), r2=((cur<<1)|1);
        return get_sum(lg,rg,l,m,r1)+get_sum(lg,rg,m+1,r,r2);
    }
};

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

    cin >> n >> q >> k;
    ST sk(n);
    set<int> st;
    for(int i=1; i<=n; i++)
    {
        cin >> c[i];
        st.insert(i);
        sk.add(i);
    }
    while(q--)
    {
        int s, t, u; cin >> s >> t >> u;
        if(s==1)
        {
            c[t] = u;
            sk.add(t);
            st.insert(t);
        }
        if(s== && k!=1)
        {
            int p = t;
            for(auto it=st.lower_bound(p); it!=st.end(); it=st.upper_bound(p))
            {
                p = *it;
                if(p > u) break;
                c[p]/=k;
                sk.add(p);
                if(c[p]==0) st.erase(it);
            }
        }
        if(s==3) cout << sk.get_sum(t, u) << '\n';

    }

    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

sterilizing.cpp: In function 'int main()':
sterilizing.cpp:56:13: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   56 |         if(s== && k!=1)
      |            ~^~~~~~~
sterilizing.cpp:56:19: error: label 'k' used but not defined
   56 |         if(s== && k!=1)
      |                   ^