提交时间:2023-03-23 21:21:01

运行 ID: 12291

#include<iostream> #include<algorithm> #include<cstdio> using namespace std; int n, m, num, l, r; //n是单词数量,m是内存 ,l和r是指针 int a[10010], b[10010]; //a数组下标表示单词,用来标记内存中是否已有下标所示单词 //b数组用来按顺序记录存入内存的单词 int ans; //ans —最终答案 int main() { scanf( "%d%d", &m, &n ); for ( int i = 1; i <= n; i++ ) { scanf( "%d", &num ); if ( a[num] == 0 ) { ans++;//要查找一次外存 r++;//表示内存中有多少个数了 b[r] = num; a[num] = 1;//num这个数出现过 if ( r > m ) {//当前内存中的数超过num了 l++;//需要把b数组最开始的元素删除掉 a[b[l]] = 0; } } } printf( "%d", ans ); return 0; }