Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <vector>
- #include <algorithm>
- #include <queue>
- const int CASO_ESPECIAL= 0;
- int main(){
- int usuarios;
- int i, n_envios;
- while(scanf("%d", &usuarios)>0){
- if(usuarios==CASO_ESPECIAL)
- return 0;
- std::pair<int, int> datos[usuarios];
- int frecs[usuarios];
- for(i=0; i<usuarios; i++){
- scanf("%d", &datos[i].second);
- scanf("%d", &datos[i].first);
- frecs[i]= datos[i].first;
- }
- sort(datos, datos+usuarios);
- std::sort(frecs, frecs+usuarios);
- scanf("%d", &n_envios);
- std::priority_queue<std::pair<int,int>,std::vector<std::pair<int,int> >,
- std::greater<std::pair<int,int> > > resultado;
- i=0;
- while(n_envios){
- if(datos[i].first < datos[(i+1)%usuarios].first){
- resultado.push(datos[i]);
- datos[i].first+=frecs[i];
- i=0;
- n_envios--;
- }else if(datos[i].first==datos[(i+1)%usuarios].first){
- resultado.push(datos[i]);
- datos[i].first+=frecs[i];
- i=(i+1)%usuarios;
- n_envios--;
- }
- else{
- i=(i+1)%usuarios;
- }
- }
- while(!resultado.empty()){
- printf("%dn", resultado.top().second);
- resultado.pop();
- }
- printf("----n");
- }
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement