最长连续不重复子序列
牛客小白月赛34 dd爱框框
最长连续不重复子序列
#include<iostream>
using namespace std;
int s[100005];
int a[100005];
int main()
{
int n,res=0;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1,j=1;i<=n;i++)
{
s[a[i]]++;
while(s[a[i]]>=2 && j<i) s[a[j]]--,j++;
res=max(res,i-j+1);
}
cout<<res;
return 0;
}
牛客小白月赛34 dd爱框框
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int N=1e7+5;
typedef long long ll;
int a[N];
int main()
{
int n,x;
ll sum=0,len=1e10,l,r;
cin>>n>>x;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1,j=1;i<=n;i++)
{
sum+=a[i];
while(sum>=x && j<i) sum-=a[j],j++;
if(sum+a[j-1]>=x && len>i-j+2) len=i-j+2,l=j-1,r=i;
}
cout<<l<<" "<<r;
return 0;
}