标签:
2 2 1 5 2 4 2 1 5 6 6
11 12
1 #include<iostream> 2 #include<queue> 3 using namespace std; 4 struct node//石头 5 { 6 int pos,dis;//pos表示位置,dis表示距离 7 }; 8 struct cmp//queue的比较函数 9 { 10 bool operator()(node a,node b) 11 { 12 if(a.pos==b.pos)return a.dis>b.dis; 13 return a.pos>b.pos;//top是最小 14 } 15 }; 16 int n,num;//n表示石头的个数,num表示遇到的石头序号 17 int main() 18 { 19 int T; 20 cin>>T; 21 while(T--) 22 { 23 cin>>n; 24 priority_queue<node,vector<node>,cmp>Q; 25 node stone; 26 for(int i=0;i<n;i++) 27 { 28 cin>>stone.pos>>stone.dis; 29 Q.push(stone); 30 } 31 num=0; 32 while(!Q.empty())//没有可投掷的石头时,一直pop top 33 { 34 stone=Q.top(); 35 Q.pop(); 36 num++; 37 if(num%2==1) 38 { 39 stone.pos+=stone.dis; 40 Q.push(stone); 41 } 42 } 43 cout<<stone.pos<<endl; 44 } 45 return 0; 46 }
标签:
原文地址:http://www.cnblogs.com/Annetree/p/5662515.html