1 solutions

  • 0
    @ 2025-11-5 20:17:41

    C :

    #include<stdio.h>
    int a[1000000];
    int main()
    {
    	int M,N,m,n,i,R;
    	char str[6];
    	scanf("%d %d",&N,&M);
    	for(i=1;i<=N;i++)
    		scanf("%d",&a[i-1]);
    	while(M--){
    		R=0;
    		scanf("%s",str);
    		scanf("%d%d",&m,&n);
    		if(str[0]=='A')
    			a[m-1]=a[m-1]+n;
    		else{
    			for(i=m-1;i<n;i++)
    			   R=R+a[i];
    	    	printf("%d\n",R);
    		}			
    	}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    int main()
    {
    int N,M,i,a[105],m,n,x;
    char b[6];
    scanf("%d%d",&N,&M);
    for(i=1;i<=N;i++)
    scanf("%d",&a[i]);
    while(M--)
    { int sum=0;
      scanf("%s%d%d",b,&m,&n);
    		 if(strcmp(b,"QUERY")==0)
    		 {	 for(i=m;i<=n;i++)
    
    			 sum+=a[i];
         printf("%d\n",sum);
    		 }
    else
    {
        i=m;
        x=n;
    	a[i]=a[i]+x;
     }
    }
    return 0;
    }
    
    

    Pascal :

    var
    t:array [0..1000001] of record
    a,b,sum:longint;
    end; 
    people:array [0..1000001] of longint;
    p,x,n,t1,a1,b1,sum1,i,k:longint;
    st,s1,st1:string;
    
    procedure make(x,y:longint;num:longint);
    begin
      t[num].a:=x;t[num].b:=y;
      if (x=y) then
    	t[num].sum:=people[y]
      else
    	begin
          make(x,(x+y) div 2,num+num);
          make((x+y) div 2+1,y,num+num+1);
          t[num].sum:=t[num+num].sum+t[num+num+1].sum;
        end;
    end;
    
    procedure query(i,j:longint;num:longint);
    var min:longint;
    begin
      if (i<=t[num].a) and (j>=t[num].b) then
    	sum1:=sum1+t[num].sum
      else
    	begin
          min:=(t[num].a+t[num].b) div 2;
          if i>min then
    		query(i,j,num+num+1)
    	  else if j<=min then
    		query(i,j,num+num)
    	  else
    		begin
    	      query(i,j,num+num);
    	      query(i,j,num+num+1);
    	    end;
    	end;
    end;
    
    procedure add(i,j:longint;num:longint);
    begin
      t[num].sum:=t[num].sum+j;
      if (t[num].a=i) and (t[num].b=i) then exit;
      if i>((t[num].a+t[num].b) div 2) then
      add(i,j,num+num+1)
      else
      add(i,j,num+num);
    end;
    
    begin
          readln(n,k);
          for i:=1 to n do read(people[i]);readln;
    	  make(1,n,1);
          for i:=1 to k do
          begin
    	      readln(s1);
    	      t1:=pos(' ',s1);
    	      st1:=copy(s1,1,t1-1);
    	      delete(s1,1,t1);
    	      t1:=pos(' ',s1);
    	      st:=copy(s1,1,t1-1);
    	      delete(s1,1,t1);
    	      val(st,a1);
    	      val(s1,b1);
    	             if st1='QUERY'then begin sum1:=0;query(a1,b1,1);writeln(sum1);end;
                        if st1='ADD'   then add(a1,b1,1);
    end;
    end.
    
    

    Java :

    import java.util.Scanner;
    public class Main
    {
    	static Scanner sc=new Scanner(System.in);
    	static int N=sc.nextInt();
    	static int M=sc.nextInt();
    	static int arr[]=new int[N+1];
    	public static void main(String[] args)
    	{
    		for(int i=1;i<N+1;i++)
    		{
    			arr[i]=sc.nextInt();
    		}
    		arr[0]=-1;
    		getSum(M);
    	}
    	public static void getSum(int a)
    	{
    		while(a-->0)
    		{
    			String str=sc.next();
    			if(str.equals("QUERY"))
    			{
    				int m=sc.nextInt();
    				int n=sc.nextInt();
    				int sum=0;
    				for(int i=m;i<=n;i++)
    				{
    					sum+=arr[i];
    				}
    				System.out.println(sum);
    			}else{
    				int m=sc.nextInt();
    				int n=sc.nextInt();
    				arr[m]+=n;
    			}
    		}
    	}
    }        
    

    Information

    ID
    20234
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    # Submissions
    1
    Accepted
    1
    Uploaded By