Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef unsigned long long int ulli;
- struct dragon{
- ulli days, bills;
- int arrival_day;
- int training_day;
- };
- const bool operator < (const dragon a, const dragon b) {
- return a.bills*b.days < a.days*b.bills;
- }
- int main()
- {
- priority_queue <dragon> dragons;
- unsigned long long int ans=0;
- unsigned long long int d,b;
- scanf("%llu %llu",&d,&b);
- dragon current_dragon;
- current_dragon.days=d;
- current_dragon.bills=b;
- current_dragon.arrival_day=0;
- current_dragon.training_day=0;
- int current_day=0;
- current_day++;
- while(scanf("%llu %llu",&d,&b)!=EOF){
- dragon a;
- a.days = d;
- a.bills = b;
- a.arrival_day = current_day;
- dragons.push(a);
- if(current_day - current_dragon.training_day == current_dragon.days){
- current_dragon = dragons.top();
- dragons.pop();
- current_dragon.training_day = current_day;
- ans += (current_dragon.training_day-current_dragon.arrival_day)*(current_dragon.bills);
- }
- current_day++;
- }
- while(!dragons.empty()){
- if(current_day - current_dragon.training_day == current_dragon.days){
- current_dragon = dragons.top();
- dragons.pop();
- current_dragon.training_day = current_day;
- ans += (current_dragon.training_day-current_dragon.arrival_day)*(current_dragon.bills);
- }
- current_day++;
- }
- printf("%llu\n",ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement