# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
366540 |
2021-02-14T11:01:38 Z |
idk321 |
Pinball (JOI14_pinball) |
C++11 |
|
13 ms |
19308 KB |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll M = 1000000000000000000LL;
const int N = 300005;
ll tree[2][4 * N];
void make(ll num, int i, int a, int b, int node, int type)
{
if (a == b)
{
tree[type][node] = min(tree[type][node], num);
return;
}
int mid = (a + b) / 2;
if (i <= mid) make(num, i, a, mid, node * 2, type);
else make(num, i, mid + 1, b, node * 2 + 1, type);
tree[type][node] = min(tree[type][node * 2], tree[type][node * 2 + 1]);
}
ll getMin(int from, int to, int a, int b, int node, int type)
{
if (from <= a && b <= to) return tree[type][node];
int mid = (a + b) / 2;
ll res = M;
if (from <= mid) res = min(res, getMin(from, to, a, mid, node * 2, type));
if (to > mid) res = min(res, getMin(from, to, mid + 1, b, node * 2 + 1, type));
return res;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int m, n;
cin >> m >> n;
vector<array<int, 4>> devices(m);
set<int> values;
values.insert(1);
values.insert(n);
for (int i = 0; i < m; i++)
{
int a, b, c, d;
cin >> a >> b >> c >> d;
devices[i][0] = a;
values.insert(a);
devices[i][1] = b;
values.insert(b);
values.insert(c);
devices[i][2] = c;
devices[i][3] = d;
}
map<int, int> to;
int curTo = 1;
for (int i : values)
{
to[i] = curTo;
curTo++;
}
n = to[n];
for (auto& device : devices)
{
for (int i = 0; i <= 2; i++) device[i] = to[device[i]];
}
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j < 4 * N; j++) tree[i][j] = M;
}
make(0, 1, 1, n, 1, 0);
make(0, n, 1, n, 1, 1);
ll res = M;
for (int i = 0; i < m; i++)
{
int x = devices[i][0];
int y = devices[i][1];
int c = devices[i][2];
int d = devices[i][3];
array<ll, 2> newVal;
for (int j = 0; j < 2; j++) newVal[j] = getMin(x, y, 1, n, 1, j) + d;
for (int j = 0; j < 2; j++ )make(newVal[j], c, 1, n, 1, j);
res = min(res, newVal[0] + newVal[1] - d);
}
cout << res << "\n";
}
/*
5 6
2 4 3 5
1 2 2 8
3 6 5 2
4 6 4 7
2 4 3 10
*/
/*
6 6
2 4 3 5
1 2 2 8
3 6 5 2
4 6 4 7
2 4 3 10
1 5 1 4
*/
/*
3 5
2 4 3 10
1 3 1 20
2 5 4 30
*/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
19308 KB |
Output is correct |
2 |
Correct |
11 ms |
19180 KB |
Output is correct |
3 |
Correct |
11 ms |
19180 KB |
Output is correct |
4 |
Correct |
11 ms |
19180 KB |
Output is correct |
5 |
Correct |
11 ms |
19180 KB |
Output is correct |
6 |
Correct |
11 ms |
19180 KB |
Output is correct |
7 |
Incorrect |
11 ms |
19180 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
19308 KB |
Output is correct |
2 |
Correct |
11 ms |
19180 KB |
Output is correct |
3 |
Correct |
11 ms |
19180 KB |
Output is correct |
4 |
Correct |
11 ms |
19180 KB |
Output is correct |
5 |
Correct |
11 ms |
19180 KB |
Output is correct |
6 |
Correct |
11 ms |
19180 KB |
Output is correct |
7 |
Incorrect |
11 ms |
19180 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
19308 KB |
Output is correct |
2 |
Correct |
11 ms |
19180 KB |
Output is correct |
3 |
Correct |
11 ms |
19180 KB |
Output is correct |
4 |
Correct |
11 ms |
19180 KB |
Output is correct |
5 |
Correct |
11 ms |
19180 KB |
Output is correct |
6 |
Correct |
11 ms |
19180 KB |
Output is correct |
7 |
Incorrect |
11 ms |
19180 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
13 ms |
19308 KB |
Output is correct |
2 |
Correct |
11 ms |
19180 KB |
Output is correct |
3 |
Correct |
11 ms |
19180 KB |
Output is correct |
4 |
Correct |
11 ms |
19180 KB |
Output is correct |
5 |
Correct |
11 ms |
19180 KB |
Output is correct |
6 |
Correct |
11 ms |
19180 KB |
Output is correct |
7 |
Incorrect |
11 ms |
19180 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |