#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
int smallestSubarray(vector<int>arr,int k)
{
unordered_map<int,int>mp;
mp[0]=-1;
int prefixsum=0;
int n=arr.size();
int length=INT_MAX;
for(int i=0;i<n;i++)
{
prefixsum=prefixsum+arr[i];
if(mp.find(prefixsum-k)!=mp.end())
{
int current_len=i-mp[prefixsum-k];
length=min(current_len,length);
}
mp[prefixsum]=i;
}
return length;
}
int longestSubarray(vector<int>arr,int k)
{
unordered_map<int,int>map;
map[0]=-1;
int prefixsum=0;
int n=arr.size();
int length=INT_MIN;
for(int i=0;i<n;i++)
{
prefixsum=prefixsum+arr[i];
if(map.find(prefixsum-k)!=map.end())
{
int current_len=i-map[prefixsum-k];
length=max(current_len,length);
}
if(map.find(prefixsum)==map.end())
{
map[prefixsum]=i;
}
}
return length;
}
int main() {
vector<int>arr={2,6,4,4,0,1,6,1};
int k;
cin>>k;
cout<<smallestSubarray(arr,k);
cout<<endl;
cout<<longestSubarray(arr,k);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKCgppbnQgc21hbGxlc3RTdWJhcnJheSh2ZWN0b3I8aW50PmFycixpbnQgaykKIHsKIAl1bm9yZGVyZWRfbWFwPGludCxpbnQ+bXA7CiAJbXBbMF09LTE7CiAgICBpbnQgcHJlZml4c3VtPTA7CiAgICBpbnQgbj1hcnIuc2l6ZSgpOwogICAgaW50ICBsZW5ndGg9SU5UX01BWDsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgewogICAgIAlwcmVmaXhzdW09cHJlZml4c3VtK2FycltpXTsKICAgICAJaWYobXAuZmluZChwcmVmaXhzdW0taykhPW1wLmVuZCgpKQogICAgIAkgewogICAgIAkgCWludCBjdXJyZW50X2xlbj1pLW1wW3ByZWZpeHN1bS1rXTsKICAgICAJIAlsZW5ndGg9bWluKGN1cnJlbnRfbGVuLGxlbmd0aCk7CiAgICAgCSB9CiAgICAgCSBtcFtwcmVmaXhzdW1dPWk7CiAgICAgfQogICAgIHJldHVybiBsZW5ndGg7CiB9CgoKaW50IGxvbmdlc3RTdWJhcnJheSh2ZWN0b3I8aW50PmFycixpbnQgaykKIHsKIAl1bm9yZGVyZWRfbWFwPGludCxpbnQ+bWFwOwogCW1hcFswXT0tMTsKICAgIGludCBwcmVmaXhzdW09MDsKICAgIGludCBuPWFyci5zaXplKCk7CiAgICBpbnQgIGxlbmd0aD1JTlRfTUlOOwogICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICB7CiAgICAgCXByZWZpeHN1bT1wcmVmaXhzdW0rYXJyW2ldOwogICAgIAlpZihtYXAuZmluZChwcmVmaXhzdW0taykhPW1hcC5lbmQoKSkKICAgICAJIHsKICAgICAJIAlpbnQgY3VycmVudF9sZW49aS1tYXBbcHJlZml4c3VtLWtdOwogICAgIAkgCWxlbmd0aD1tYXgoY3VycmVudF9sZW4sbGVuZ3RoKTsKICAgICAJIH0KICAgICAJIGlmKG1hcC5maW5kKHByZWZpeHN1bSk9PW1hcC5lbmQoKSkKICAgICAJICAgICB7CiAgICAgCSAgICAgCW1hcFtwcmVmaXhzdW1dPWk7CiAgICAgCSAgICAgfQogICAgIH0gCSAgICAgCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KCgppbnQgbWFpbigpIHsKICAgdmVjdG9yPGludD5hcnI9ezIsNiw0LDQsMCwxLDYsMX07CglpbnQgazsKCWNpbj4+azsKCWNvdXQ8PHNtYWxsZXN0U3ViYXJyYXkoYXJyLGspOwogICAgY291dDw8ZW5kbDsKICAgIGNvdXQ8PGxvbmdlc3RTdWJhcnJheShhcnIsayk7CiAgICAKICAgIAoKCQp9CQoJ