| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 24418 | Extazy | 돌 무게 재기 (IZhO11_stones) | C++14 | 69 ms | 8164 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int N = 1<<17;
const int TREE_SIZE = N<<2;
const int INF = (1e9) + 7;
struct tree_node {
int min,max,sum;
tree_node() {
min=0;
max=0;
sum=0;
}
};
int n;
tree_node tree[TREE_SIZE];
tree_node q;
tree_node merge_them(tree_node a, tree_node b) {
tree_node ans;
ans.sum=a.sum+b.sum;
ans.min=min(b.min,b.sum+a.min);
ans.max=max(b.max,b.sum+a.max);
return ans;
}
void update_tree(int a, int b, int pos, int node, int value) {
if(a>b || a>pos || b<pos) return;
if(a==b) {
tree[node].sum+=value;
tree[node].min=tree[node].max=tree[node].sum;
return;
}
update_tree(a,(a+b)>>1,pos,node<<1,value);
update_tree(((a+b)>>1)+1,b,pos,(node<<1)|1,value);
tree[node]=merge_them(tree[node<<1],tree[(node<<1)|1]);
}
int main() {
int i,x,y;
scanf("%d", &n);
for(i=1;i<=n;i++) {
scanf("%d %d", &x, &y);
if(y==1) update_tree(1,n,x,1,1);
else update_tree(1,n,x,1,-1);
q=tree[1];
if(q.min>=0 && q.max>0) printf(">\n");
else if(q.min<0 && q.max<=0) printf("<\n");
else printf("?\n");
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
