#include <cstdio>
const int N=100005;
typedef long long LL;
LL a[N*3],b[N*3];
int x[N],w[N],ans[N];
int main(){
int n,L,T;
scanf("%d%d%d\n",&n,&L,&T);
LL p=T/L*2,q=T%L*2,ta=0,tb=0;
for (int i=0;i<n;i++){
scanf("%d%d\n",&x[i],&w[i]);
if (w[i]==1) a[++ta]=x[i];
else b[++tb]=x[i];
}
for (int i=1;i<=ta;i++){
a[i]-=L*2;
a[i+ta]=a[i]+L;
a[i+ta*2]=a[i]+L*2;
}
for (int i=1;i<=tb;i++){
b[i+tb]=b[i]+L;
b[i+tb*2]=b[i]+L*2;
}
for (int i=0,l=1,r=1;i<n;i++)
if (w[i]==1){
for (;l<=tb*3 && b[l]<=x[i];l++);
for (;r<=tb*3 && b[r]<x[i]+q;r++);
ans[(r-l+p*tb+i)%n]=(x[i]+T)%L;
}
for (int i=0,l=1,r=1;i<n;i++)
if (w[i]==2){
for (;l<=ta*3 && a[l]<=x[i]-q;l++);
for (;r<=ta*3 && a[r]<x[i];r++);
ans[((i-r+l-p*ta)%n+n)%n]=(x[i]-T%L+L)%L;
}
for (int i=0;i<n;i++) printf("%d\n",ans[i]);
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:11:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d\n",&n,&L,&T);
^
./Main.cpp:14:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d\n",&x[i],&w[i]);
^