Submission #1230445

#TimeUsernameProblemLanguageResultExecution timeMemory
1230445warrennVudu (COCI15_vudu)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long

int n,p;
int a[1000002];
int b[1000002];
int pref[1000002];
map<int,int>conv;
int cnt=1;
vector<int>tmp,st;

void update(int idx,int l,int r,int pos,int val){
    if(l==r){
        st[idx]+=val;
        return ;
    }
    int mid=(l+r)/2;
    if(pos<=mid)update(2*idx,l,mid,pos,val);
    else update(2*idx+1,mid+1,r,pos,val);
    st[idx]=st[2*idx]+st[2*idx+1];
}

int query(int idx,int l,int r,int posl,int posr){
    if(l>=posl && r<=posr)return st[idx];
    if(l>posr || r<posl)return 0;
    int mid=(l+r)/2;
    return query(2*idx,l,mid,posl,posr)+query(2*idx+1,mid+1,r,posl,posr);
}

int conv(int hah){
    int idx=lower_bound(tmp.begin(),tmp.end(),hah)-tmp.begin();
    return idx+1;
}

signed main(){
    cin>>n;    
    for(int q=1;q<=n;q++){
        cin>>a[q];
    }
    cin>>p;
    for(int q=1;q<=n;q++){
        pref[q]=pref[q-1]+a[q];
        b[q]=pref[q]-p*q;
        tmp.push_back(b[q]);
    }
    tmp.push_back(0);

    sort(tmp.begin(),tmp.end());
    tmp.erase(unique(tmp.begin(),tmp.end()),tmp.end());
    st=vector<int>(4*cnt+1,0);
    int ans=0;
    update(1,1,cnt,conv(0),1);
   
    for(int q=1;q<=n;q++){
        ans+=query(1,1,cnt,1,conv(b[q]));
    //    cout<<ans<<" "<<conv[b[q]]<<endl;
        update(1,1,cnt,conv(b[q]),1);
    }
    cout<<ans<<endl;
}

Compilation message (stderr)

vudu.cpp:31:17: error: 'long long int conv(long long int)' redeclared as different kind of entity
   31 | int conv(int hah){
      |                 ^
vudu.cpp:9:13: note: previous declaration 'std::map<long long int, long long int> conv'
    9 | map<int,int>conv;
      |             ^~~~
vudu.cpp: In function 'int main()':
vudu.cpp:53:24: error: no match for call to '(std::map<long long int, long long int>) (int)'
   53 |     update(1,1,cnt,conv(0),1);
      |                    ~~~~^~~
vudu.cpp:56:34: error: no match for call to '(std::map<long long int, long long int>) (long long int&)'
   56 |         ans+=query(1,1,cnt,1,conv(b[q]));
      |                              ~~~~^~~~~~
vudu.cpp:58:28: error: no match for call to '(std::map<long long int, long long int>) (long long int&)'
   58 |         update(1,1,cnt,conv(b[q]),1);
      |                        ~~~~^~~~~~