Smallest Sub-Array
Smallest Sub-Array


代码
#include<iostream>
#include<string.h>
using namespace std;
const int MAXN = 1e6 + 7;
#define min(a,b) (a)<(b)?(a):(b)
int a[MAXN];
int book[MAXN];
int t;
int m, n, k;
void build()
{
a[1] = 1;
a[2] = 2;
a[3] = 3;
for (int i = 4; i <= n; i++)
a[i] = (a[i - 1] + a[i - 2] + a[i - 3]) % m + 1;
}
int main()
{
int z=0;
cin >> t;
while (t--)
{
cin >> n >> m >> k;
build();
int l = 1, r = 1, res = 0;
int ans = MAXN;
memset(book, 0, sizeof(book));
while (r <=n)
{
int c = a[r++];
book[c]++;
if (c <= k && book[c] == 1)res++;
while (l < r && res == k)
{
ans = min(ans, r - l);
c = a[l++];
book[c]--;
if (c <= k && book[c] == 0)res--;
}
}
z++;
if (ans <= n)cout << "Case" << " " << z << ":" << " " << ans << endl;
else cout << "Case" << " " << z << ":" <<" "<< "sequence nai" << endl;
}
return 0;
}

浙公网安备 33010602011771号