kien_coi_1997

job.cpp

Apr 9th, 2014
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.82 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <queue>
  3. #include <iostream>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. #define long long long
  8. #define f1(i,n) for (int i=1; i<=n; i++)
  9. #define f0(i,n) for (int i=0; i<n; i++)
  10.  
  11. #define N 100005
  12. int n, Index[N], Time[N], Cost[N];
  13. priority_queue<int> qu;
  14.  
  15. bool cmp(int x, int y){
  16.     if (Time[x]!=Time[y]) return Time[x]>Time[y];
  17.     return Cost[x]>Cost[y];
  18. }
  19.  
  20. main(){
  21.     scanf("%d", &n);
  22.     f1(i,n) scanf("%d%d", &Time[i], &Cost[i]);
  23.     f1(i,n) Index[i]=i;
  24.     sort(Index+1, Index+n+1, cmp);
  25.     int Pos=1, ThisTime=1000000000;
  26.     long Sum = 0;
  27.     while (ThisTime!=0) {
  28.         while (Pos<=n && Time[Index[Pos]]==ThisTime)
  29.         qu.push(Cost[Index[Pos]]), Pos++;
  30.         if (qu.size()) { Sum+=qu.top(); qu.pop(); }
  31.         ThisTime--;
  32.         if (qu.empty()) ThisTime=Time[Index[Pos]]; // Time[0]=0
  33.     }
  34.     cout << Sum << endl;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment