Submission #994665

#TimeUsernameProblemLanguageResultExecution timeMemory
994665MisalignedDivJobs (BOI24_jobs)C++14
29 / 100
100 ms21700 KiB
#include <iostream>
#include <bits/stdc++.h>
#include <map>
#include <vector>
#include <cmath>
#include <algorithm>
#include <unistd.h>  
#include <cstdio>

using namespace std;

typedef long long ll;
typedef unsigned int uint;
typedef pair<ll, int> pil;
typedef vector<int> vi;
typedef long long ll;
typedef pair<ll,ll> pll;

const int SS = 3e5 + 8;

class Solution{
	public:
	ll N, S, xi, pi, newS;
	vector<ll> profit = {0},
	           childs[SS];
	priority_queue< pll > maxPq;
	ll profitProfit(){
		cin >> N >> S;
		newS = S;
		for (int i = 1; i <= N; i++){
			cin >> xi >> pi;
			childs[pi].push_back(i);
			profit.push_back( xi );
			if (pi == 0){maxPq.push( make_pair(xi, i) );}
		}
		while (!maxPq.empty()){
			auto [money, currNode] = maxPq.top(); maxPq.pop();
			if (-money > newS) continue;
			if (money > 0)     newS += money, money = 0;
			if (!childs[currNode].empty()){
				maxPq.push( make_pair( money + profit[ childs[currNode][0] ], childs[currNode][0]));
			}
			
		}
		return newS - S;
		
	}	
};


int main(){
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	
	Solution p;
	cout << p.profitProfit();
}

Compilation message (stderr)

Main.cpp: In member function 'll Solution::profitProfit()':
Main.cpp:37:9: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   37 |    auto [money, currNode] = maxPq.top(); maxPq.pop();
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...