제출 #125120

#제출 시각아이디문제언어결과실행 시간메모리
125120AuldLangSyneSterilizing Spray (JOI15_sterilizing)C++14
15 / 100
5088 ms6136 KiB
#include <bits/stdc++.h> #define ll long long #define f(i, a, b) for(ll i = a; i <= b; ++i) #define ff(i, a, b) for(ll i = a; i < b; ++i) #define F(i, a, b) for(ll i = a; i >= b; --i) #define FF(i, a, b) for(ll i = a; i > b; --i) #define x first #define y second #define X real() #define Y imag() using namespace std; typedef complex<ll> P; typedef pair<ll, ll> ii; typedef tuple<ll, ll, ll> iii; const int N = 1e5+7; int n, m, k, id, u, v; ll a[N], node[4*N]; void build(int id, int l , int r){ if(l == r){ node[id] = a[r]; return; } int mid = (l+r)/2; build(2*id, l, mid); build(2*id+1, mid+1, r); node[id] = node[2*id] + node[2*id+1]; } void upd_point(int id, int l, int r, int pos, int val){ if(pos < l || r < pos) return; if(l == r){ node[id] = val; return; } int mid = (l+r)/2; upd_point(2*id, l, mid, pos, val); upd_point(2*id+1, mid+1, r, pos, val); node[id] = node[2*id] + node[2*id+1]; } void upd_segment(int id, int l, int r, int u, int v){ if(v < l || r < u) return; if(u <= l && r <= v){ if(l == r){ node[id] /= k; return; } } int mid = (l+r)/2; upd_segment(2*id, l, mid, u, v); upd_segment(2*id+1, mid+1, r, u, v); node[id] = node[2*id]+node[2*id+1]; } ll get_ans(int id, int l, int r, int u, int v){ if(v < l || r < u) return 0; if(u <= l && r <= v) return node[id]; int mid = (l+r)/2; return get_ans(2*id, l, mid, u, v) + get_ans(2*id+1, mid+1, r, u, v); } signed main(){ scanf("%d %d %d", &n, &m, &k); f(i,1,n){ scanf("%lld", &a[i]); } build(1,1,n); while(m--){ scanf("%d %d %d", &id, &u, &v); if(id == 1){ upd_point(1,1,n,u,v); }else if(id == 2 && k > 1){ upd_segment(1,1,n,u,v); }else if(id == 3){ printf("%lld\n", get_ans(1,1,n,u,v)); } } }

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

sterilizing.cpp: In function 'int main()':
sterilizing.cpp:65:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d", &n, &m, &k);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
sterilizing.cpp:67:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &a[i]);
   ~~~~~^~~~~~~~~~~~~~~
sterilizing.cpp:71:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d", &id, &u, &v);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...