TLE84求调试(+<100ms)
查看原帖
TLE84求调试(+<100ms)
559506
BestFriend楼主2025/8/5 11:00
#include<queue>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n,m,cnt;
queue<int> q;
vector<int> s,r;
char buf[1000001],*p1=buf,*p2=buf;
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
inline int read(){
	int x=0,f=1;
	char ch=nc();
	while(ch<48||ch>57){
		if(ch=='-'){
            f=-1;
        }
		ch=nc();
	}
	while(ch>=48&&ch<=57){
        x=(x<<1)+(x<<3)+(ch^48),ch=nc();
    }
	return x*f;
}
inline void write(int x){
	if(x<0){
        putchar('-'),x=-x;
    }
	if(x>9){
        write(x/10);
    }
	putchar(x%10+48);
	return;
}
signed main(){
    n=read(),m=read();
    s.reserve(200000),r.reserve(200000);
    for(int i=1,x;i<=n;++i){
        x=read();
        r.push_back(x);
    }
    for(int i=1,x;i<=m;++i){
    	x=read();
    	q.push(x-1);
	}
	for(int i=0;i<n;++i){
        s.insert(upper_bound(s.begin(),s.end(),r[i]),r[i]);
		auto t=q.front();
		while(t==i){
			q.pop();
			t=q.front();
			write(s[cnt++]),putchar('\n');
		}
	}
    return 0;
}
2025/8/5 11:00
加载中...