제출 #310079

#제출 시각아이디문제언어결과실행 시간메모리
310079mohamedsobhi777Sterilizing Spray (JOI15_sterilizing)C++14
80 / 100
5093 ms2812 KiB
#include<bits/stdc++.h> #pragma GCC optimize("-Ofast") //#pragma GCC optimize("trapv") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,sse4.2,popcnt,abm,mmx,avx2,tune=native") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-funroll-loops") #define I inline void #define S struct #define vi vector<int> #define vii vector<pair<int,int>> #define pii pair<int,int> #define pll pair<ll,ll> using namespace std ; using ll = long long ; using ld = long double ; const int N = 2e5 + 7 , mod = 1e9 + 7 ; const ll inf = 2e18 ; // How interesting! int n, m , k ; ll tree[N * 4] ; void update(int node, int L , int R , int ix , int v){ if(L == R){ tree[node] = v ; return ; } int mid = (L + R) >> 1; if(ix <= mid) update(node*2+1 , L , mid , ix ,v) ; else update(node*2+2, mid + 1 , R , ix , v) ; tree[node] = tree[node*2+1] + tree[node*2+2] ; } void spray(int node , int L, int R , int l , int r){ if(l > R || r < L) return ; if(L == R){ tree[node]/=k ; return ; } if(L >= l && R <= r && tree[node] == 0){ return ; } int mid = (L + R) >> 1; spray(node * 2 + 1, L , mid, l , r) ; spray(node * 2 + 2, mid + 1 , R , l , r) ; tree[node] = tree[node*2+1] + tree[node*2+2] ; } ll query(int node, int L , int R , int l , int r){ if(l > r || l > R || r < L) return 0 ; if(L>= l && R <= r) return tree[node] ; int mid = (L + R) >> 1 ; ll s1 = query(node*2+1, L , mid , l , r) ; ll s2 = query(node*2+2 , mid+1 , R , l , r) ; return s1 + s2 ; } int main(){ ios_base::sync_with_stdio(0) ; cin.tie(0) ; //freopen("in.in" , "r" , stdin) ; cin >> n >> m >> k ; for(int i= 1; i <= n; ++ i){ int x ; cin >> x ; update(0 , 1, N , i , x) ; } for(int i = 0 ;i < m ; ++ i){ int t , l , r ; cin >> t >> l >> r ; if(t == 1){ update(0 , 1, N, l , r) ; }else if(t == 2){ if(k > 1) ; spray(0 , 1 , N , l , r) ; }else{ cout<< query(0 ,1 , N, l , r) <<"\n" ; } } return 0 ; } /* - bounds sir (segtree = 4N, eulerTour = 2N, ...) - a variable defined twice? - will overflow? - is it a good complexity? - don't mess up indices (0-indexed vs 1-indexed) - reset everything between testcases. */

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

sterilizing.cpp: In function 'int main()':
sterilizing.cpp:86:25: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   86 |                         if(k > 1) ;
      |                         ^~
sterilizing.cpp:87:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   87 |                                 spray(0 , 1 , N , 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...