제출 #318484

#제출 시각아이디문제언어결과실행 시간메모리
318484tengiz05휴가 (IOI14_holiday)C++17
23 / 100
39 ms5732 KiB
#include "holiday.h"
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N = 1e5;
int a[N];
ll findMaxAttraction(int n, int start, int d, int att[]) {
	for(int i=0;i<n;i++){
		a[i] = att[i];
	}
	ll ans = 0;
	if(start==0){
		priority_queue<ll> q;
		multiset<ll> s;
		ll sum = 0;
		int mid = min(n, (d+1)/2);
		if(d%2==0&&mid!=n)mid++;
		for(int i=0;i<mid;i++){
			s.insert(a[i]);
			sum += a[i];
		}ans = sum;
		if(d%2==0&&mid!=n){
			auto x = s.begin();sum -= *x;
			s.erase(x);
		}
		for(int i=mid;i<min(d, n);i++){
			auto f = s.begin();
			sum -= *f;q.push(*f); s.erase(f);
			ll mn = *s.begin();
			q.push(a[i]);
			ll mx = q.top();
			if(mn < mx){
				s.erase(s.find(mn));sum-=mn;
				sum += mx;q.pop();
				s.insert(mx);
			}
			ans = max(sum, ans);
		}
	}else {
		cout << "I HAVE NO IDEA HOW TO SOLVE IT" << endl;
		ans = (ll)892347238923847;
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...