算法:前缀和
#include<bits/stdc++.h>
using namespace std;
const int N = 5e4 + 10;
int a[N], s[N], first[10], last[10];
int n;
int main()
{
//freopen("div7.in","r",stdin);
//freopen("div7.out","w",stdout);
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &s[i]);
s[i] = (s[i] + s[i - 1]) % 7;
}
int num = 0; // num是个好技巧
for(int i = 1; i <= n; i++)
{
if(!first[s[i]] && s[i])
{
first[s[i]] = i;
num ++;
if(num == 6) break;
}
}
num = 0;
for(int i = n; i >= 1; i--)
{
if(!last[s[i]])
{
last[s[i]] = i;
num ++;
if(num == 7) break;
}
}
int res = 0;
for(int i = 0; i < 7; i++)
res = max(res, last[i] - first[i]);
printf("%d", res);
return 0;
}