답안 #535514

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
535514 2022-03-10T12:17:24 Z keta_tsimakuridze Peru (RMI20_peru) C++14
49 / 100
600 ms 51104 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++) {
		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;
}
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 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 97 ms 10240 KB Output is correct
16 Correct 91 ms 9860 KB Output is correct
17 Correct 88 ms 9904 KB Output is correct
18 Correct 65 ms 9872 KB Output is correct
19 Correct 61 ms 10000 KB Output is correct
20 Correct 81 ms 10004 KB Output is correct
21 Correct 93 ms 10216 KB Output is correct
22 Correct 97 ms 10028 KB Output is correct
23 Correct 138 ms 9976 KB Output is correct
24 Correct 84 ms 9892 KB Output is correct
25 Correct 85 ms 9952 KB Output is correct
26 Correct 93 ms 9528 KB Output is correct
27 Correct 92 ms 9496 KB Output is correct
28 Correct 98 ms 8908 KB Output is correct
29 Correct 96 ms 9084 KB Output is correct
30 Correct 89 ms 8276 KB Output is correct
31 Correct 87 ms 8276 KB Output is correct
32 Correct 93 ms 8412 KB Output is correct
33 Correct 87 ms 8276 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 97 ms 10240 KB Output is correct
2 Correct 91 ms 9860 KB Output is correct
3 Correct 88 ms 9904 KB Output is correct
4 Correct 65 ms 9872 KB Output is correct
5 Correct 61 ms 10000 KB Output is correct
6 Correct 81 ms 10004 KB Output is correct
7 Correct 93 ms 10216 KB Output is correct
8 Correct 97 ms 10028 KB Output is correct
9 Correct 138 ms 9976 KB Output is correct
10 Correct 84 ms 9892 KB Output is correct
11 Correct 85 ms 9952 KB Output is correct
12 Correct 93 ms 9528 KB Output is correct
13 Correct 92 ms 9496 KB Output is correct
14 Correct 98 ms 8908 KB Output is correct
15 Correct 96 ms 9084 KB Output is correct
16 Correct 89 ms 8276 KB Output is correct
17 Correct 87 ms 8276 KB Output is correct
18 Correct 93 ms 8412 KB Output is correct
19 Correct 87 ms 8276 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 340 KB Output is correct
27 Correct 1 ms 340 KB Output is correct
28 Correct 1 ms 340 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Correct 1 ms 340 KB Output is correct
33 Correct 1 ms 340 KB Output is correct
34 Correct 571 ms 49460 KB Output is correct
35 Execution timed out 609 ms 51104 KB Time limit exceeded
36 Halted 0 ms 0 KB -