
本想练习一下模拟,不过用vector貌似可以轻松水过?(虽然还是模拟)
但突然发现貌似我并不会判断单词是否在内存中出现过?
最后还是靠度娘解决了。
代码如下:
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (register int i = (a); i <= (b); i++) int n, m, word, ans = ; vector<int> v; int read() {
int x = , flag = ;
char ch = ' ';
while (ch != '-' && (ch < '' || ch > '')) ch = getchar();
if (ch == '-') {
flag = ;
ch = getchar();
}
while (ch >= '' && ch <= '') {
x = (x << ) + (x << ) + ch - '';
ch = getchar();
}
return flag ? -x : x;
} void write(int x) {
if (x < ) {
putchar('-');
x = -x;
}
if (x > ) write(x / );
putchar(x % + '');
} int main() {
while (~scanf("%d%d", &m, &n)) {
rep(i, , n) {
word = read();
if (std::find(v.begin(), v.end(), word) == v.end()) {
v.push_back(word);
ans++;
}
if (v.size() > m) v.erase(v.begin());
}
write(ans);
}
return ;
}