답안 #953662

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
953662 2024-03-26T12:07:23 Z m5588ohammed Sterilizing Spray (JOI15_sterilizing) C++14
5 / 100
70 ms 8272 KB
/******************************************************************************

Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.

*******************************************************************************/
#include <bits/stdc++.h>
using namespace std;
#define int long long
int Tree[3000000];
int N=(1<<(int)(log2(1000000)));
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(l,(r+l)/2,i*2)+solve(((l+r)/2)+1,r,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;
                indx--;
                cin>>indx>>b;
                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 5 ms 4700 KB Output is correct
2 Correct 3 ms 4700 KB Output is correct
3 Correct 2 ms 4700 KB Output is correct
4 Correct 6 ms 4700 KB Output is correct
5 Correct 8 ms 4700 KB Output is correct
6 Correct 9 ms 4556 KB Output is correct
7 Correct 8 ms 4700 KB Output is correct
8 Correct 8 ms 4700 KB Output is correct
9 Correct 8 ms 4764 KB Output is correct
10 Correct 8 ms 4700 KB Output is correct
11 Correct 8 ms 4700 KB Output is correct
12 Correct 9 ms 4772 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 70 ms 8272 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 4696 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 7004 KB Output isn't correct
2 Halted 0 ms 0 KB -