这是我的代码:
#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 没看出哪里没有更新呀?