# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
295060 |
2020-09-09T12:56:56 Z |
arayi |
벽 (IOI14_wall) |
C++17 |
|
146 ms |
262148 KB |
#include <bits/stdc++.h>
#include "wall.h"
#define MP make_pair
#define ad push_back
#define fr first
#define sc second
using namespace std;
const int N = 2e6 + 30;
const int n1 = 1e5;
int nn;
vector <pair<int, int> > fp[N], fp1[N], ff[N], ff1[N];
bool col[N];
priority_queue <int> h[N], h1[N];
int t1[N];
void upd1(int q, int l = 0, int r = n1, int nd = 1)
{
if(q > r || q < l) return;
if(l == r)
{
if(h1[l].empty()) t1[nd] = 0;
else t1[nd] = h1[l].top();
return;
}
int mid = (l + r) / 2;
upd1(q, l, mid, nd * 2);
upd1(q, mid + 1, r, nd * 2 + 1);
t1[nd] = max(t1[nd * 2], t1[nd * 2 + 1]);
}
int t[N];
void upd(int q, int l = 0, int r = n1, int nd = 1)
{
if(q > r || q < l) return;
if(l == r)
{
if(h[l].empty()) t[nd] = 0;
else t[nd] = h[l].top();
return;
}
int mid = (l + r) / 2;
upd(q, l, mid, nd * 2);
upd(q, mid + 1, r, nd * 2 + 1);
t[nd] = max(t[nd * 2], t[nd * 2 + 1]);
}
int qry(int l = 0, int r = n1, int nd = 1, int a = 0, int b = 0)
{
if(l == r) return l;
int mid = (l + r) / 2;
if(max(a, t1[nd * 2]) < max(b, t[nd * 2 + 1])) return qry(mid + 1, r, nd * 2 + 1, max(a, t1[nd * 2]), b);
else return qry(l, mid, nd * 2, a, max(b, t[nd * 2 + 1]));
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[])
{
nn = n;
for (int i = 0; i < k; i++)
{
if(op[i] == 1) fp[left[i]].ad(MP(height[i], i + 1)), ff[right[i] + 1].ad(MP(height[i], i + 1));
else fp1[left[i]].ad(MP(height[i], i + 1)), ff1[right[i] + 1].ad(MP(height[i], i + 1));
}
for (int i = 0; i < nn; i++)
{
for(auto p : fp[i])
{
h[p.fr].push(p.sc);
upd(p.fr);
}
for(auto p : fp1[i])
{
h1[p.fr].push(p.sc);
upd1(p.fr);
}
for(auto p : ff[i])
{
col[p.sc] = 1;
while(!h[p.fr].empty() && col[h[p.fr].top()]) h[p.fr].pop();
upd(p.fr);
}
for(auto p : ff1[i])
{
col[p.sc] = 1;
while(!h1[p.fr].empty() && col[h1[p.fr].top()]) h1[p.fr].pop();
upd1(p.fr);
}
finalHeight[i] = qry();
}
return;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
146 ms |
262148 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
142 ms |
262148 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
142 ms |
262148 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
142 ms |
262144 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |