1 #include2 #include 3 #include 4 #define maxn 5100 5 #include 6 using namespace std; 7 8 struct node 9 { 10 int x,y; 11 int id; 12 bool operator<(const node &t)const 13 { 14 return y>t.y; 15 } 16 } hang[maxn],lie[maxn]; 17 18 bool cmp(const node &a,const node &b) 19 { 20 return a.x q; 26 27 int main() 28 { 29 int n; 30 while(scanf("%d",&n)&&n) 31 { 32 for(int i=0; i v.y) 55 { 56 flag=0; 57 break; 58 } 59 h[v.id]=timer; 60 timer++; 61 if(timer>n)break; 62 } 63 if(flag) 64 { 65 sort(lie,lie+n,cmp); 66 cur=0; 67 timer=1; 68 while(!q.empty())q.pop(); 69 while(1) 70 { 71 while(cur <=timer)q.push(lie[cur++]); 72 if(timer<=n&&q.empty()) 73 { 74 flag=0; 75 break; 76 } 77 node v=q.top(); 78 q.pop(); 79 if(timer v.y) 80 { 81 flag=0; 82 break; 83 } 84 l[v.id]=timer; 85 timer++; 86 if(timer>n)break; 87 } 88 } 89 for(int i=0;i