2 条题解
-
0
#define int long long #define elif else if #define fin(x) freopen (x, "r", stdin) #define fout(x) freopen (x, "w", stdout) #define reg(i,x,y) for (register int i = (x); i <= (y); ++i) #define Reg(i,x,y) for (register int i = (y); i >= (x); --i) using namespace std; int m,n,s = 0; vector<int> a; map<int,bool> ma; queue<int> q; inline int read (void) {int x = 0,f = 0;char ch = getchar ();while (!isdigit (ch)) {f |= (ch == '-');ch = getchar ();}while (isdigit (ch)) x = (x << 1) + (x << 3) + (ch ^ 48),ch = getchar ();return f ? -x : x;} inline string rstr (void) {string s = "";char ch = getchar ();while (ch != '\n' && ch != EOF) {if (ch != ' ') s += ch;ch = getchar ();}return s;} inline char rch (void) {char ch = getchar ();while (ch == ' ' || ch == '\n') ch = getchar ();return ch;} inline void write (int x = 0) {if (x < 0) putchar ('-'),x = -x;if (x > 9) write (x / 10);putchar (x % 10 | 48);} inline void write_ (int x = 0,char ch = ' ') {write (x);putchar (ch);} signed main () { m = read (),n = read (); a.push_back (0); reg (i,1,n) a.push_back (read ()); int p = 0; reg (i,1,n) if (!ma[a[i]]) { if (s < m) ++s,ma[a[i]] = true,++p,q.push (a[i]); else ma[a[i]] = true,ma[q.front ()] = false,q.pop (),++p,q.push (a[i]); } write (p); return 0; }
- 1
信息
- ID
- 298
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- (无)
- 递交数
- 59
- 已通过
- 35
- 上传者