Find the Kth number
题目内容:时间限制:500ms内存限制:128000kb
#include <iostream> #include <queue> #include <vector> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main() { priority_queue<vector<int> > que; int n,m,k; cin>>n>>m>>k; int array[n][2]; for(int i=0;i<n;i++){ cin>>array[i][0]>>array[i][1]; } // initialize que for(int i=0;i<n;i++) { vector<int> item; item.push_back(-array[i][0]-array[i][1]); item.push_back(i); item.push_back(1); que.push(item); } int value,idx,a,b,x,new_value; // k-1 times pop() for(int i=0;i<k-1;i++) { vector<int> item; item = que.top(); que.pop(); value = -item[0]; idx = item[1]; x = item[2]; a = array[idx][0]; b = array[idx][1]; if(x+1<=m) { new_value=a*(x+1)+b; item[0]=-new_value; item[2]=x+1; que.push(item); } } //k-th pop vector<int> item; item = que.top(); cout<<-item[0]; return 0; }