제출 #305081

#제출 시각아이디문제언어결과실행 시간메모리
305081luciocfFeast (NOI19_feast)C++14
100 / 100
277 ms8824 KiB
#include <bits/stdc++.h>
 
#define ff first
#define ss second
 
using namespace std;
 
typedef long long ll;
typedef pair<ll, int> pii;
 
const int maxn = 3e5+10;
const ll inf = 6e14+10;
 
int n;
int a[maxn];
 
ll pref[maxn];
 
pii dp[maxn];
 
int qtd(ll c)
{	
	pii mx = {0, 0};
 
	for (int i = 1; i <= n; i++)
	{
		mx = max(mx, {dp[i-1].ff - pref[i-1], dp[i-1].ss});
 
		dp[i] = max(dp[i-1], {pref[i] + mx.ff - c, mx.ss+1});
	}
 
	return dp[n].ss;
}
 
int main(void)
{
	int k;
	scanf("%d %d", &n, &k);
 
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);
 
		pref[i] = pref[i-1]+1ll*a[i];
	}
 
	ll ini = 0, fim = inf, best = inf;
 
	while (ini <= fim)
	{
		ll mid = (ini+fim)/2ll;
 
		if (qtd(mid) == k)
		{
			best = mid;
			break;
		}

		if (qtd(mid) > k) ini = mid+1;
		else best = mid, fim = mid-1;
	}
 
	qtd(best);
 
	printf("%lld\n", dp[n].ff + 1ll*dp[n].ss*best);
}

컴파일 시 표준 에러 (stderr) 메시지

feast.cpp: In function 'int main()':
feast.cpp:38:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   38 |  scanf("%d %d", &n, &k);
      |  ~~~~~^~~~~~~~~~~~~~~~~
feast.cpp:42:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   42 |   scanf("%d", &a[i]);
      |   ~~~~~^~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...