直接用一个数组来存放内存中已经有的单词,内存已满时将从头开始存放并覆盖原有单词,每次查询都遍历一遍数组看是否有这个单词,如果没有就ans++。数组初始值为-1代表刚开始时为空。

#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;

void solve()
{
	int n,m,ans=0,ai,p=0;
	bool find;
	int a[105];
	memset(a,-1,sizeof a);
	cin>>m>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>ai;
		find=false;
		for(auto x:a)
		{	
			if(x==ai)find=true;
		}
		if(!find)
		{
			ans++;
			a[p]=ai;
			p++;
			if(p==m)p=0;//当内存满的时候从头开始覆盖
		}
	}
	cout<<ans;
} 

int main()
{  
	IOS; 
	solve();
	return 0; 
}