Submission #442095

# Submission time Handle Problem Language Result Execution time Memory
442095 2021-07-07T06:45:09 Z Evirir Feast (NOI19_feast) C++17
12 / 100
127 ms 14384 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;

#define watch(x) cout<<(#x)<<"="<<(x)<<'\n'
#define mset(d,val) memset(d,val,sizeof(d))
#define setp(x) cout<<fixed<<setprecision(x)
#define forn(i,a,b) for(int i=(a);i<(b);i++)
#define fore(i,a,b) for(int i=(a);i<=(b);i++)
#define pb push_back
#define F first
#define S second
#define pqueue priority_queue
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<ll> vi;
typedef vector<ii> vii;
typedef long double ld;
template<typename T>
using pbds = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
void amin(ll &a, ll b){ a=min(a,b); }
void amax(ll &a, ll b){ a=max(a,b); }
void YES(){cout<<"YES\n";} void NO(){cout<<"NO\n";}
void SD(int t=0){ cout<<"PASSED "<<t<<endl; }
const ll INF = ll(1e18);
const int MOD = 998244353;

const bool DEBUG = 0;
const int MAXN = 300005;

int n,K;
ll a[MAXN];
ll p[MAXN];
ll dp[MAXN], cnt[MAXN];
ii pre[MAXN]; //best dp[j-1]+sum(j..i) for j<=i

ll sum(int l, int r){ return p[r]-(l?p[l-1]:0LL); }

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	
	cin>>n>>K;
	fore(i,1,n)
	{
		cin>>a[i];
		p[i]=p[i-1]+a[i];
	}
	dp[0]=-INF;
	cnt[0]=0;
	pre[0]={-INF,0};
	
	ll ans=0;
	for(ll L=0,R=1e16;L<=R;)
	{
		ll mid=(L+R)>>1;
		
		fore(i,1,n)
		{
			ii tmp=pre[i-1];
			tmp.F+=a[i];
			pre[i]=max(tmp, {(i>1?dp[i-1]:0LL)+a[i]-mid, cnt[i-1]+1});
			if(pre[i].F>=dp[i-1])
			{
				dp[i]=pre[i].F;
				cnt[i]=pre[i].S;
			}
			else
			{
				dp[i]=dp[i-1];
				cnt[i]=cnt[i-1];
			}
		}
		if(cnt[n]>=K)
		{
			ans=dp[n]+min((ll)K,cnt[n])*mid;
			L=mid+1;
		}
		else R=mid-1;
		
		if(0)
		{
			cout<<"mid="<<mid<<'\n';
			cout<<"a: "; fore(i,1,n) cout<<a[i]<<" "; cout<<'\n';
			cout<<"dp: "; fore(i,1,n) cout<<dp[i]<<" "; cout<<'\n';
			cout<<"cnt: "; fore(i,1,n) cout<<cnt[i]<<" "; cout<<'\n';
			cout<<"pre: "; fore(i,1,n) cout<<"("<<pre[i].F<<","<<pre[i].S<<") "; cout<<'\n';
			cout<<"ans: "<<dp[n]+cnt[n]*mid<<"\n\n";
		}
	}
	
	cout<<ans<<'\n';
	
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 105 ms 13952 KB Output is correct
2 Correct 109 ms 14212 KB Output is correct
3 Correct 106 ms 14380 KB Output is correct
4 Correct 112 ms 14276 KB Output is correct
5 Correct 106 ms 14212 KB Output is correct
6 Correct 108 ms 14020 KB Output is correct
7 Correct 102 ms 13844 KB Output is correct
8 Correct 108 ms 14120 KB Output is correct
9 Correct 101 ms 13912 KB Output is correct
10 Correct 104 ms 14120 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 92 ms 14048 KB Output is correct
2 Correct 119 ms 14276 KB Output is correct
3 Correct 93 ms 13936 KB Output is correct
4 Correct 94 ms 14164 KB Output is correct
5 Correct 106 ms 13968 KB Output is correct
6 Correct 92 ms 13932 KB Output is correct
7 Correct 95 ms 14384 KB Output is correct
8 Correct 127 ms 14304 KB Output is correct
9 Correct 105 ms 13872 KB Output is correct
10 Correct 91 ms 14288 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 126 ms 14240 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 105 ms 13952 KB Output is correct
2 Correct 109 ms 14212 KB Output is correct
3 Correct 106 ms 14380 KB Output is correct
4 Correct 112 ms 14276 KB Output is correct
5 Correct 106 ms 14212 KB Output is correct
6 Correct 108 ms 14020 KB Output is correct
7 Correct 102 ms 13844 KB Output is correct
8 Correct 108 ms 14120 KB Output is correct
9 Correct 101 ms 13912 KB Output is correct
10 Correct 104 ms 14120 KB Output is correct
11 Correct 92 ms 14048 KB Output is correct
12 Correct 119 ms 14276 KB Output is correct
13 Correct 93 ms 13936 KB Output is correct
14 Correct 94 ms 14164 KB Output is correct
15 Correct 106 ms 13968 KB Output is correct
16 Correct 92 ms 13932 KB Output is correct
17 Correct 95 ms 14384 KB Output is correct
18 Correct 127 ms 14304 KB Output is correct
19 Correct 105 ms 13872 KB Output is correct
20 Correct 91 ms 14288 KB Output is correct
21 Incorrect 126 ms 14240 KB Output isn't correct
22 Halted 0 ms 0 KB -