Points:
1500
Time limit:
1.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Cho một mảng gồm \(n\) số nguyên và số nguyên \(t\).
Yêu cầu: Tìm mảng con gồm những phần tử liên tiếp dài nhất sao cho tổng tất cả các phần tử của mảng này không quá \(t\). Và số lượng phần tử của mảng này chính là kết quả cần tìm.
Input
-
Dòng thứ nhất chứa hai số nguyên \(n,t(1\le n\le 10^5;1\le t\le 10^9)\)
-
Dòng thứ hai chứa \(n\) số nguyên \(a_1,a_2,...,a_n(1\le a_i\le 10^4)\)
Output
- In ra giá trị cần tìm.
Example
Test 1
Input
4 4
1 2 1 2
Output
3
Note
Giải thích: Mảng con gồm những phần tử \(a_1,a_2,a_3\) là mảng con có độ dài lớn nhất ta cần tìm vì chúng thoả mãn yêu cầu bài toán.
Comments
include<bits/stdc++.h>
using namespace std;
const int sm=1e6+3;
int n,a[sm],t=0,s,m=0;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n>>s; for(int i=0; i<n; i++) cin>>a[i];
int l=0, r=0;
while(r<n) { t+=a[r]; while(t>s) {t-=a[l]; l++;}
m=max(m,r-l+1);
r++;
}
cout<<m;
return 0;}
n,t = map(int,input().split())
a = list(map(int,input().split()))
s = 0
j = 0
MAX = 0
for i in range(n):
s += a[i]
if (s>t):
while (s>t):
s -= a[j]
j += 1
else:
MAX = max(MAX,i-j+1)
print(MAX)
jumptozero anh cho em xin link bài này bên Codeforces ạ
tui tin pref+chặt sẽ ac
This comment is hidden due to too much negative feedback. Click here to view it.
This comment is hidden due to too much negative feedback. Click here to view it.
ai giúp em với ạ bài này quy hoạch động thế nào ạ
dùng deque cũng ac được, đỡ phải xa xôi gì:>
Uồi bài này dùng Queue cũng khá ảo :v
This comment is hidden due to too much negative feedback. Click here to view it.