Submission #151974

#TimeUsernameProblemLanguageResultExecution timeMemory
151974TadijaSebezSterilizing Spray (JOI15_sterilizing)C++11
100 / 100
591 ms9080 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N=100050; ll sum[N]; void Set(int i, ll f){ for(;i<N;i+=i&-i) sum[i]+=f;} ll Get(int i){ ll ans=0;for(;i;i-=i&-i) ans+=sum[i];return ans;} ll Get(int l, int r){ return Get(r)-Get(l-1);} int a[N]; set<int> pos; void upd(int x, int y){ Set(x,y-a[x]);a[x]=y;} int main() { int n,q,k; scanf("%i %i %i",&n,&q,&k); for(int i=1;i<=n;i++) scanf("%i",&a[i]),Set(i,a[i]),pos.insert(i); while(q--) { int t,l,r; scanf("%i %i %i",&t,&l,&r); if(t==1) upd(l,r),pos.insert(l); if(t==2 && k!=1) { for(auto it=pos.lower_bound(l);it!=pos.upper_bound(r);) { upd(*it,a[*it]/k); if(a[*it]==0) pos.erase(it++); else it++; } } if(t==3) printf("%lld\n",Get(l,r)); } return 0; }

Compilation message (stderr)

sterilizing.cpp: In function 'int main()':
sterilizing.cpp:15:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i %i",&n,&q,&k);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~
sterilizing.cpp:16:53: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=1;i<=n;i++) scanf("%i",&a[i]),Set(i,a[i]),pos.insert(i);
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
sterilizing.cpp:20:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%i %i %i",&t,&l,&r);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...