id更新不当?还是思路有差错?

这是我的代码:

#include<bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
#define i_ak return
#define ioi  0
I AK IOI;
int n,w,h;
struct node{
	int x,y;
};
struct per{
	int id,op,p,t,cha;
	node en;
}a[200005];
unordered_map<int,vector<int> >g;
int main(){
	//freopen("","r",stdin);
	//freopen("","w",stdout);
	cin>>n>>w>>h;
	vector<node>ans(n+1);
	for(int i=1;i<=n;i++){
		cin>>a[i].op>>a[i].p>>a[i].t;
		a[i].id=i;
		a[i].cha=a[i].t-a[i].p;
		if(a[i].op==1)a[i].en={w,a[i].p};
		else a[i].en={a[i].p,h};
		g[a[i].cha].push_back(i);
	}
	for(auto it:g){
		vector<int>op1,op2;
		for(auto i:it.second){
			if(a[i].op==1)op1.push_back(i);
			else op2.push_back(i);
		}
		sort(op1.begin(),op1.end(),[&](int t1,int t2){
			return a[t1].p<a[t2].p;
		});
		sort(op2.begin(),op2.end(),[&](int t1,int t2){
			return a[t1].p>a[t2].p;
		});
		vector<int>s;
		s.insert(s.end(),op1.begin(),op1.end());
		s.insert(s.end(),op2.begin(),op2.end());
		vector<node>res;
		for(auto f:s)res.push_back(a[f].en);
		reverse(res.begin(),res.end());
		for(int j=0;j<s.size();j++)ans[a[s[j]].id]=res[j];
	}
	for(int i=1;i<=n;i++)cout<<ans[i].x<<' '<<ans[i].y<<endl;
	i_ak ioi;
}

WA5 没看出哪里没有更新呀?