我不理解,为什么快读0分全TLE
查看原帖
我不理解,为什么快读0分全TLE
785704
jiawenbo楼主2024/3/9 11:12

我用scanf print输入输出的时候AC,但是改成快读就会TLE,为什么

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll read () 
{
    register ll x = 0,f = 1;register char ch;
    ch = getchar();
    while(ch > '9' || ch < '0') if(ch == '-') f = -f,ch = getchar();
    while(ch <= '9' && ch >= '0') x = x * 10 + ch - 48,ch = getchar();
    return x * f;
}
void write (ll x)
{
	if (x < 0) putchar('-'),x = -x;
	if (x > 9) write(x / 10),putchar(x % 10 + '0');
	else putchar(x + '0');
	return; 
}
queue <ll> dictionary;
ll book[10001];
int main()
{
	ll m = read(),n = read();
	ll sum = 0,c = 0;
	for (ll i = 1; i <= n; i ++)
	{
		ll x = read();
		if (!book[x])
		{
			sum ++;
			if (c == m)
			{
				book[dictionary.front()] = 0;
				dictionary.pop();
			}
			dictionary.push(x);
			book[x] = 1;
			if (c < m) c ++;
		}
	}
	write(sum);
	return 0;
}

我用快读写的代码

2024/3/9 11:12
加载中...