# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
292095 |
2020-09-06T10:29:00 Z |
SamAnd |
Meetings (IOI18_meetings) |
C++17 |
|
1119 ms |
13320 KB |
#include "meetings.h"
#include <bits/stdc++.h>
using namespace std;
#define m_p make_pair
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
typedef long long ll;
const int N = 100005;
int n, qq;
vector<ll> solv2(vector<int> H, vector<int> L, vector<int> R)
{
vector<ll> v;
for (int ii = 0; ii < qq; ++ii)
{
int l = L[ii];
int r = R[ii];
vector<ll> ans(n);
for (int i = l; i <= r; ++i)
ans[i] = 0;
stack<pair<int, int> > s;
ll yans = 0;
for (int i = l; i <= r; ++i)
{
int q = 1;
while (!s.empty() && H[i] >= s.top().fi)
{
yans -= s.top().fi * 1LL * s.top().se;
q += s.top().se;
s.pop();
}
s.push(m_p(H[i], q));
yans += s.top().fi * 1LL * s.top().se;
ans[i] += yans;
}
while (!s.empty())
s.pop();
yans = 0;
for (int i = r; i >= l; --i)
{
int q = 1;
while (!s.empty() && H[i] >= s.top().fi)
{
yans -= s.top().fi * 1LL * s.top().se;
q += s.top().se;
s.pop();
}
s.push(m_p(H[i], q));
yans += s.top().fi * 1LL * s.top().se;
ans[i] += yans - H[i];
}
yans = ans[l];
for (int i = l; i <= r; ++i)
yans = min(yans, ans[i]);
v.push_back(yans);
}
return v;
}
struct ban
{
int l, r, ans;
int q;
ban()
{
ans = l = r = 0;
q = 0;
}
ban(int x)
{
if (x == 1)
{
ans = l = r = 1;
}
else
{
ans = l = r = 0;
}
q = 1;
}
};
ban t[N * 4];
ban mer(const ban& l, const ban& r)
{
ban res;
if (l.q == l.l)
res.l = l.q + r.l;
else
res.l = l.l;
if (r.q == r.r)
res.r = r.q + l.r;
else
res.r = r.r;
res.ans = max(l.ans, r.ans);
res.ans = max(res.ans, l.r + r.l);
res.q = l.q + r.q;
return res;
}
void bil(const vector<int>& H, int tl, int tr, int pos)
{
if (tl == tr)
{
t[pos] = ban(H[tl]);
return;
}
int m = (tl + tr) / 2;
bil(H, tl, m, pos * 2);
bil(H, m + 1, tr, pos * 2 + 1);
t[pos] = mer(t[pos * 2], t[pos * 2 + 1]);
}
ban qry(int tl, int tr, int l, int r, int pos)
{
if (l > r)
return ban();
if (tl == l && tr == r)
return t[pos];
int m = (tl + tr) / 2;
return mer(qry(tl, m, l, min(m, r), pos * 2),
qry(m + 1, tr, max(m + 1, l), r, pos * 2 + 1));
}
vector<ll> solv3(vector<int> H, vector<int> L, vector<int> R)
{
bil(H, 0, n - 1, 1);
vector<ll> v;
for (int ii = 0; ii < qq; ++ii)
{
int l = L[ii];
int r = R[ii];
ban u = qry(0, n - 1, l, r, 1);
v.push_back(u.ans + (r - l + 1 - u.ans) * 2);
}
return v;
}
std::vector<long long> minimum_costs(std::vector<int> H, std::vector<int> L,
std::vector<int> R)
{
n = sz(H);
qq = sz(L);
if (n <= 5000 && qq <= 5000)
return solv2(H, L, R);
return solv3(H, L, R);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
6528 KB |
Output is correct |
2 |
Correct |
5 ms |
6656 KB |
Output is correct |
3 |
Correct |
6 ms |
6656 KB |
Output is correct |
4 |
Correct |
6 ms |
6656 KB |
Output is correct |
5 |
Correct |
6 ms |
6656 KB |
Output is correct |
6 |
Correct |
6 ms |
6656 KB |
Output is correct |
7 |
Correct |
5 ms |
6656 KB |
Output is correct |
8 |
Correct |
5 ms |
6656 KB |
Output is correct |
9 |
Correct |
6 ms |
6656 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
6528 KB |
Output is correct |
2 |
Correct |
5 ms |
6656 KB |
Output is correct |
3 |
Correct |
6 ms |
6656 KB |
Output is correct |
4 |
Correct |
6 ms |
6656 KB |
Output is correct |
5 |
Correct |
6 ms |
6656 KB |
Output is correct |
6 |
Correct |
6 ms |
6656 KB |
Output is correct |
7 |
Correct |
5 ms |
6656 KB |
Output is correct |
8 |
Correct |
5 ms |
6656 KB |
Output is correct |
9 |
Correct |
6 ms |
6656 KB |
Output is correct |
10 |
Correct |
385 ms |
6904 KB |
Output is correct |
11 |
Correct |
1119 ms |
6996 KB |
Output is correct |
12 |
Correct |
384 ms |
6904 KB |
Output is correct |
13 |
Correct |
1113 ms |
6904 KB |
Output is correct |
14 |
Correct |
321 ms |
6904 KB |
Output is correct |
15 |
Correct |
335 ms |
6904 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
6528 KB |
Output is correct |
2 |
Correct |
50 ms |
8456 KB |
Output is correct |
3 |
Correct |
143 ms |
11260 KB |
Output is correct |
4 |
Correct |
150 ms |
13300 KB |
Output is correct |
5 |
Correct |
111 ms |
13296 KB |
Output is correct |
6 |
Correct |
132 ms |
13296 KB |
Output is correct |
7 |
Correct |
148 ms |
13296 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
6528 KB |
Output is correct |
2 |
Correct |
50 ms |
8456 KB |
Output is correct |
3 |
Correct |
143 ms |
11260 KB |
Output is correct |
4 |
Correct |
150 ms |
13300 KB |
Output is correct |
5 |
Correct |
111 ms |
13296 KB |
Output is correct |
6 |
Correct |
132 ms |
13296 KB |
Output is correct |
7 |
Correct |
148 ms |
13296 KB |
Output is correct |
8 |
Incorrect |
145 ms |
13320 KB |
Output isn't correct |
9 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
6528 KB |
Output is correct |
2 |
Correct |
5 ms |
6656 KB |
Output is correct |
3 |
Correct |
6 ms |
6656 KB |
Output is correct |
4 |
Correct |
6 ms |
6656 KB |
Output is correct |
5 |
Correct |
6 ms |
6656 KB |
Output is correct |
6 |
Correct |
6 ms |
6656 KB |
Output is correct |
7 |
Correct |
5 ms |
6656 KB |
Output is correct |
8 |
Correct |
5 ms |
6656 KB |
Output is correct |
9 |
Correct |
6 ms |
6656 KB |
Output is correct |
10 |
Correct |
385 ms |
6904 KB |
Output is correct |
11 |
Correct |
1119 ms |
6996 KB |
Output is correct |
12 |
Correct |
384 ms |
6904 KB |
Output is correct |
13 |
Correct |
1113 ms |
6904 KB |
Output is correct |
14 |
Correct |
321 ms |
6904 KB |
Output is correct |
15 |
Correct |
335 ms |
6904 KB |
Output is correct |
16 |
Correct |
4 ms |
6528 KB |
Output is correct |
17 |
Correct |
50 ms |
8456 KB |
Output is correct |
18 |
Correct |
143 ms |
11260 KB |
Output is correct |
19 |
Correct |
150 ms |
13300 KB |
Output is correct |
20 |
Correct |
111 ms |
13296 KB |
Output is correct |
21 |
Correct |
132 ms |
13296 KB |
Output is correct |
22 |
Correct |
148 ms |
13296 KB |
Output is correct |
23 |
Incorrect |
145 ms |
13320 KB |
Output isn't correct |
24 |
Halted |
0 ms |
0 KB |
- |