pbds莫名WA
查看原帖
pbds莫名WA
482660
konyakest楼主2022/8/3 20:05
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define F(i,j,k) for (signed i=signed(j);i<=signed(k);i++)
#define endl '\n'
typedef unsigned int ui ;
struct node{
	ui ac,tim,id;
};
bool operator >(node n1,node n2){
	if(n1.ac!=n2.ac) return n1.ac>n2.ac;
	if(n1.tim!=n2.tim) return n1.tim<n2.tim;
	return n1.id>n2.id;
}
typedef tree<node,null_type,greater<node>,rb_tree_tag,
tree_order_statistics_node_update> std_tree;
std_tree t;
ui n,m,last=7,T;
ui seed;
ui randNum( ui& seed , ui last , const ui m){ 
    seed = seed * 17 + last ; return seed % m + 1; 
}
node nds[(int)1e5+5];
void solve(){
	t=tree<node,null_type,greater<node>,rb_tree_tag,tree_order_statistics_node_update>();
	F(i,1,n){
		ui ria=randNum(seed,last,m),rib=randNum(seed,last,m);
		if(nds[ria].id!=0) t.erase(nds[ria]);
		nds[ria]={nds[ria].ac+1,nds[ria].tim+rib-1,(ui)i};
		cout<<(last=t.order_of_key(nds[ria]))<<endl;
		nds[ria].tim++;
		t.insert(nds[ria]);
	}
}
main() { 
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
	cin>>T;
	while(T--){
	     F(i,1,1e5+4) nds[i]={0,0,0}; 
	     cin>>m>>n>>seed,solve();
	}
    return 0; 
}
2022/8/3 20:05
加载中...