[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
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; }
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; }
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"; } }
}
Code day nha mn
include<bits/stdc++.h>
using namespace std;
int main() { ios::syncwithstdio(false); cin.tie(NULL);
}
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)