답안 #953671

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
953671 2024-03-26T12:27:19 Z m5588ohammed Sterilizing Spray (JOI15_sterilizing) C++14
5 / 100
72 ms 3164 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
int Tree[3000000];
int N=(1<<(int)(log2(200000)));
int l,r;
int solve(int l1,int r1,int i){
    if(l1>r||r1<l) return 0;
    if(l1>=l&&r1<=r) return Tree[i];
    return solve(l1,(r1+l1)/2,i*2)+solve(((l1+r1)/2)+1,r1,i*2+1);
}
signed main()
{
    int n,k,q;
    cin>>n>>q>>k;
    int arr[n+1];
    for(int i=0;i<n;i++){
        cin>>arr[i];
        Tree[i+N]=arr[i];
    }
    for(int i=N-1;i>=1;i--) Tree[i]=Tree[i*2]+Tree[i*2+1];
    
    if(n<=3000&&q<=3000){
        while(q--){
            int type;
            cin>>type;
            if(type==1){
                int indx,b;
                cin>>indx>>b;
                arr[indx-1]=b;
            }
            if(type==2){
                int l,r;
                cin>>l>>r;
                for(int i=l-1;i<r;i++){
                    arr[i]=arr[i]/k;
                }
                
            }
            if(type==3){
                int l,r,sum=0;
                cin>>l>>r;
                for(int i=l-1;i<r;i++){
                    sum+=arr[i];    
                }
                cout<<sum<<endl;
            }
            
        }
    }
    
    else if(k==1){
        while(q--){
            int type;
            cin>>type;
            if(type==1){
                int indx,b;
                cin>>indx>>b;
                indx--;
                Tree[indx+N]=arr[indx]=b;
                indx+=N;
                indx/=2;
                while(indx!=0){
                    Tree[indx]=Tree[indx*2]+Tree[indx*2+1];
                    indx/=2;
                }
            }
            if(type==3){
                cin>>l>>r;
                l--;
                r--;
                cout<<solve(0,N-1,1)<<endl;
            }    
        }
    }
 
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 2648 KB Output is correct
2 Correct 2 ms 2648 KB Output is correct
3 Correct 3 ms 2652 KB Output is correct
4 Correct 6 ms 2652 KB Output is correct
5 Correct 8 ms 2904 KB Output is correct
6 Correct 9 ms 2524 KB Output is correct
7 Correct 8 ms 2652 KB Output is correct
8 Correct 9 ms 2776 KB Output is correct
9 Correct 8 ms 2648 KB Output is correct
10 Correct 8 ms 2652 KB Output is correct
11 Correct 8 ms 2772 KB Output is correct
12 Correct 8 ms 2768 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 72 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 2652 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 19 ms 2896 KB Output isn't correct
2 Halted 0 ms 0 KB -