Cho một dãy a gồm N số nguyên, được đánh số từ 1 đến N, số thứ i có giá trị là ai ban đầu tất cả các số đều có giá trị bằng 0. Ta có Q thao tác. Có hai loại thao tác
- Loại 1: Gồm hai số i, v: gán ai=v
- Loại 2: Gồm hai số l, r: trả về số có giá trị lớn nhất trong đoạn từ l đến r.
Dữ liệu vào:
- Dòng đầu tiền gồm 2 hai số nguyên dương NN, QQ (N,Q≤2000N,Q≤2000)
- Dòng thứ hai gồm N số, là giá trị ban đầu của dãy a
- Q dòng tiếp theo mỗi dòng là gồm 3 số, số đầu tiên là t (1≤t≤2), là loại thao tác của thao tác hiện tại. Nếu t=1, hai số tiếp theo sẽ là i và v (1≤i≤N, 1≤v≤10^9). Nếu t=2, hai số tiếp theo sẽ là l và r (1 ≤ l ≤ r ≤ n).
Dữ liệu ra:
- Dòng nhiều dòng là đáp án cho các thao tác loại 2, mỗi số in trên một dòng.
Ví dụ:
Input:
5 6
1 2 3 4 5
2 1 5
1 1 6
2 1 5
2 2 4
1 2 5
2 2 4
Output:
5
6
4
5
Code của e
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a[2000],q,n,t,i,v,l,r,maxx;
int main()
{
int t,a1,b1;
cin>>n>>q;
for (i=1;i<=n;i++) cin>>a[i];
int k=0;
while (q--)
{
// k++;
cin>>t>>a1>>b1;
if (t==1)
{
a[a1]=b1;
}
if (t==2)
{
maxx=a[a1];
for (int j=2;j<=b1;j++) if (maxx<a[j]) maxx=a[j];
cout<<maxx;
}
}
return 0;
}
Nhưng code này chỉ đưa ra kết quả ngay dưới các dòng của input
Như thế này:
5 6
1 2 3 4 5
2 1 5
5
1 1 6
2 1 5
6
2 2 4
4
1 2 5
2 2 4
Cho em các để các số đó xuất hiện riêng như trên đề ko ạ?
Em cảm ơn!