#include<bits/stdc++.h>
using namespace std;
#define N 100009
int n,m,u,v,dis[N],val[N],lst[N];
stack<int>stk;
void check()
{
stack<int>tmp;
while(!stk.empty())
{
printf("%d(%d) ",stk.top(),dis[stk.top()]);
tmp.push(stk.top());
stk.pop();
}
while(!tmp.empty()) stk.push(tmp.top()),tmp.pop();
printf("\n");
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&dis[i],&val[i]);
if((!stk.empty())&&(dis[stk.top()]<dis[i]))
{
printf("%d<%d\n",dis[stk.top()],dis[i]);
lst[stk.top()]=i;
stk.pop();
check();
}
if(stk.empty()) printf("加入%d\n",dis[i]);
else printf("%d比不过 加入%d\n",dis[stk.top()],dis[i]);
stk.push(i);
check();
}
while(!stk.empty()) lst[stk.top()]=0,stk.pop();
for(int i=1;i<=n;i++) printf("%d ",lst[i]);
return 0;
}
结果:
6 5
4 10
加入4
1(4)
6 8
4<6
加入6
2(6)
3 5
6比不过 加入3
3(3) 2(6)
4 14
3<4
2(6)
6比不过 加入4
4(4) 2(6)
10 9
4<10
2(6)
6比不过 加入10
5(10) 2(6)
4 20
10比不过 加入4
6(4) 5(10) 2(6)
2 0 4 5 0 0
为什么10比6小啊!!!