Submission #535519

# Submission time Handle Problem Language Result Execution time Memory
535519 2022-03-10T12:28:17 Z keta_tsimakuridze Peru (RMI20_peru) C++14
18 / 100
600 ms 8276 KB
#include<bits/stdc++.h>
#include "peru.h"
using namespace std;

#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define endl "\n"

const int N = 2e5 + 5, mod = 1e9 + 7; //!
int t;
void add(int &a, int c) {
	a += c;
	if(a >= mod) a -= mod;
}
int solve(int n, int k, int *x) {
	vector<int> a(n + 1), p(n + 1);
	vector<ll> dp(n + 1);
	for(int i = 0; i < n; i++) a[i + 1] = x[i];
	deque<pii> st;
	multiset<ll> s;
	p[0] = 1;
	for(int i = 1; i <= n - 1; i++) p[i] = (ll)p[i - 1] * 23 % mod;
	int ans = 0;
	for(int i = 1; i <= n; i++) {
		dp[i] = 1e15;
		int mx = 0;
		for(int j = i; j >= max(1, i - k + 1); j--) {
			mx = max(mx, a[j]);
			dp[i] = min(dp[i], mx  + dp[j - 1]);
		}
		/*
		if(st.size() && st.front().s < i - k + 1) {
			pii x = st.front();
			s.erase(s.find(dp[x.s - 1] + a[x.f]));
			st.front().s++; 
			x.s++;
			if(x.s> x.f) st.pop_front();
			else s.insert(dp[x.s - 1] + a[x.f]);
		}
		int l = i;
		while(st.size() && a[st.back().f] < a[i]) {
			l = st.back().s;
			s.erase(s.find(dp[l - 1] + a[st.back().f]));
			st.pop_back();
		}
		st.push_back({i, l}); 
		s.insert(a[i] + dp[l - 1]);
		dp[i] = *s.begin();
		*/
		
		add(ans, (ll)dp[i] % mod * p[n - i] % mod);
	}
	return ans;
}
/*
static int s[N];
int main() {
	int n, k;
	cin >> n >> k;
	for(int i = 0; i < n; i++) cin >> s[i];
	cout << solve(n, k, s);
}
*/
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 593 ms 8160 KB Output is correct
16 Correct 481 ms 8148 KB Output is correct
17 Correct 298 ms 8276 KB Output is correct
18 Correct 332 ms 8148 KB Output is correct
19 Correct 414 ms 8260 KB Output is correct
20 Execution timed out 757 ms 8276 KB Time limit exceeded
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 593 ms 8160 KB Output is correct
2 Correct 481 ms 8148 KB Output is correct
3 Correct 298 ms 8276 KB Output is correct
4 Correct 332 ms 8148 KB Output is correct
5 Correct 414 ms 8260 KB Output is correct
6 Execution timed out 757 ms 8276 KB Time limit exceeded
7 Halted 0 ms 0 KB -