Submission #541337

#TimeUsernameProblemLanguageResultExecution timeMemory
541337FidanAddk (eJOI21_addk)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const ll N = 1000'010; void upd(ll id, ll val, vector<ll> &v){ while(id<=v.size()){ v[id]+=val; id+=id&(-id); } } ll que(ll id, vector<ll> &v){ ll s=0; while(id>0){ s+=v[id]; id-=id&(-id); } return s; } ll sum(ll x, ll y, vector<ll> &v){ x1=x, y1=y; return que(y1, v)-que(x1-1, v); } ll prefix(ll x, ll y, vector<ll> &pre, vector<ll> &v){ x1=x, y1=y; return que(y1, pre)-que(x1-1, pre)-(x1-1)*sum(x1, y1, v); } ll suffix(ll x, ll y, vector<ll> &pre, vector<ll> &v){ return (y-x+2)*sum(x, y, v)-prefix(x, y, pre, v); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n, k, i, y; cin>>n>>k; vector<ll> a(n+1, 0); for(i=1; i<=n; i++){ cin>>a[i]; } vector<ll> pre(n+1, 0); for(i=1; i<=n; i++){ pre[i]=i*a[i]; } ll q; cin>>q; vector<ll> val(k+1); while(q--){ ll t; cin>>t; if(t==1){ vector<ll> x(k+1); for(i=0; i<k; i++){ cin>>x[i]; val[i]=a[x[i]]; } if(k==1) continue; x[k]=x[0]; val[k]=val[0]; for(i=0; i<k; i++){ y=x[i]; upd(y, y*(val[i+1]-val[i]), pre); y=x[i]; upd(y, val[i+1]-val[i], a); } } else { ll l, r, m, k1 , s=0, b; cin>>l>>r>>m; k1=r-l+1; if(k1>=2*m){ cout<<prefix(l, l+m-1, pre, a)+m*sum(l+m, r-m, a)+suffix(r-m+1, r, pre, a); } else { b=k1-m+1; s=prefix(l, l+b-1, pre, a)+b*sum(l+b, r-b, a)+suffix(r-b+1, r, pre, a); } cout<<s<<endl; } } return 0; }

Compilation message (stderr)

Main.cpp: In function 'void upd(ll, ll, std::vector<long long int>&)':
Main.cpp:8:10: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |  while(id<=v.size()){
      |        ~~^~~~~~~~~~
Main.cpp: In function 'll sum(ll, ll, std::vector<long long int>&)':
Main.cpp:24:2: error: 'x1' was not declared in this scope; did you mean 'x'?
   24 |  x1=x, y1=y;
      |  ^~
      |  x
Main.cpp:24:10: error: assignment of function 'double y1(double)'
   24 |  x1=x, y1=y;
      |        ~~^~
Main.cpp:25:13: error: invalid conversion from 'double (*)(double) noexcept' to 'll' {aka 'long long int'} [-fpermissive]
   25 |  return que(y1, v)-que(x1-1, v);
      |             ^~
      |             |
      |             double (*)(double) noexcept
Main.cpp:14:11: note:   initializing argument 1 of 'll que(ll, std::vector<long long int>&)'
   14 | ll que(ll id, vector<ll> &v){
      |        ~~~^~
Main.cpp: In function 'll prefix(ll, ll, std::vector<long long int>&, std::vector<long long int>&)':
Main.cpp:29:2: error: 'x1' was not declared in this scope; did you mean 'x'?
   29 |  x1=x, y1=y;
      |  ^~
      |  x
Main.cpp:29:10: error: assignment of function 'double y1(double)'
   29 |  x1=x, y1=y;
      |        ~~^~
Main.cpp:30:13: error: invalid conversion from 'double (*)(double) noexcept' to 'll' {aka 'long long int'} [-fpermissive]
   30 |  return que(y1, pre)-que(x1-1, pre)-(x1-1)*sum(x1, y1, v);
      |             ^~
      |             |
      |             double (*)(double) noexcept
Main.cpp:14:11: note:   initializing argument 1 of 'll que(ll, std::vector<long long int>&)'
   14 | ll que(ll id, vector<ll> &v){
      |        ~~~^~