[Quảng Ngãi - TS10 - 2025] Bài 4

Xem dạng PDF

Gửi bài giải

Điểm: 8,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Sau khi đậu vào lớp 10 chuyên Tin, Cường được gia đình tặng một hộp quà. Hộp quà gồm ~n~ món quà, món quà thứ ~i~ có giá trị ~a_i~ (~a_i \le 10^9,\; a_i \ne a_j~ với ~i \ne j~; ~1 \le i \le n~). Nhưng để nhận được hộp quà, Cường phải giải đáp được ~Q~ câu hỏi. Câu hỏi thứ ~k~ (~1 \le k \le Q~) chứa 3 tham số ~x,y,z~:

  • Nếu ~x = 0~: Cường cần đưa ra tổng giá trị của ~z~ món quà có giá trị nhỏ nhất trong ~y~ món quà có giá trị nhỏ nhất.
  • Nếu ~x = 1~: Cường cần đưa ra tổng giá trị của ~z~ món quà có giá trị lớn nhất trong ~y~ món quà có giá trị nhỏ nhất.

Yêu cầu: Hãy giúp Cường trả lời các câu hỏi trên.

INPUT

  • Dòng thứ nhất chứa hai số nguyên dương ~n, Q~ (~1 \le n, Q \le 10^5~);
  • Dòng thứ hai gồm ~n~ số nguyên ~a_i~ (~1 \le i \le n~);
  • ~Q~ dòng sau, mỗi dòng gồm 3 số nguyên ~x,y,z~ (~0 \le x \le 1;\; 1 \le z \le y \le n~).

Các số trên cùng một dòng được ghi cách nhau một dấu cách.

OUTPUT

Với mỗi câu hỏi in kết quả trên một dòng — một số nguyên là tổng theo yêu cầu của câu hỏi.

SAMPLE INPUT 1

6 3
2 1 3 4 6 5
1 6 2
0 5 3
1 4 2

SAMPLE OUTPUT 1

11
6
7

SUBTASKS

Subtask Điểm Ràng buộc
1 ~50~ ~n, Q \le 10^3,\; a_i \le 10^6~
2 ~50~ Không có ràng buộc gì thêm.

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    tourist1107  đã bình luận lúc 10, Tháng 5, 2026, 7:38

    include <bits/stdc++.h>

    using namespace std;

    define int long long

    const int maxn = 1e5+6; int a[maxn]; int cd[maxn]; int l,r;

    signed main() { ios::syncwithstdio(false); cin.tie(0); int n,q; cin >> n >> q; for (int i=1;i<=n;i++) cin >> a[i]; sort(a+1,a+n+1); for (int i=1;i<=n;i++) cd[i] = cd[i-1] + a[i]; int x,y,z; while (q--){ cin >> x >> y >> z; if (x==1){ r = y; l = r - z + 1; cout << cd[r] - cd[l-1] << '\n'; } else{ l = 1; r = z; cout << cd[r] - cd[l-1] << '\n'; } } return 0; }


  • 0
    huygamer  đã bình luận lúc 7, Tháng 5, 2026, 12:50

    include<bits/stdc++.h>

    using namespace std; const int N=1e6+7; long long A[N]; int main() { long long n,q;cin>>n>>q; for(int i=1;i<=n;++i) { cin>>A[i]; } sort(A+1,A+n+1); for(int i=1;i<=q;++i) { long long x,y,z;cin>>x>>y>>z; long long tong=0; if(x==0) { for(int i=1;i<=z;++i) { tong+=A[i]; } } else { for(int k=y-z+1;k<=y;++k) { tong+=A[k]; } } cout<<tong<<endl; } return 0; }


  • 0
    trungkinne06  đã bình luận lúc 28, Tháng 4, 2026, 18:21

    include<bits/stdc++.h>

    using namespace std; long long n,pre[1000009],q,a[1000006]; main(){ iosbase::syncwith_stdio(false); cin.tie(NULL); cin>>n>>q; for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+1+n); pre[0]=0; for(int i=1;i<=n;i++){ pre[i]=pre[i-1]+a[i]; } while(q--){ long long x,y,z; cin>>x>>y>>z; if(x==0){ cout<<pre[z]<<"\n"; } else{ cout<<pre[y]-pre[y-z]<<"\n"; } }

    }

    Blockquote


  • 0
    tikl20tok  đã bình luận lúc 5, Tháng 3, 2026, 15:02

    Code day nha mn

    include<bits/stdc++.h>

    using namespace std;

    int main() { ios::syncwithstdio(false); cin.tie(NULL);

    long long n,q;
    cin>>n>>q;
    long long i,j;
    vector&lt;long long> prefixsum(n+5,0),a;
    a.reserve(n+5);
    a.push_back(0);
    for (i=1;i<=n;i++)
    {
        cin>>j;
        a.push_back(j);
    }
    sort(a.begin()+1,a.end());
    for (i=1;i<=n;i++)
    {
        prefixsum[i]+=prefixsum[i-1]+a[i];
    }
    long long x,y,z;
    for (i=1;i<=q;i++)
    {
        cin>>x>>y>>z;
        if (x==1)
        {
            cout<&lt;prefixsum[y]-prefixsum[y-z];
        }
        else
        {
            cout<&lt;prefixsum[z];
        }
        cout<<"\n";
    }
    
    
    
    
    
    
    
    
    return 0;
    

    }


  • 1
    medusa97  đã bình luận lúc 3, Tháng 3, 2026, 8:35

    cho ai dùng python:

    n,Q=map(int,input().split()) a=list(map(int,input().split())) a.sort() c=[] p=[0]*(n+1) for i in range(n): p[i+1]=p[i]+a[i] for i in range(Q): x,y,z=map(int,input().split()) if x==1: c.append(p[y]-p[y-z]) else: c.append(p[z]) for i in c: print(i)