이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "game.h"
#include<bits/stdc++.h>
using namespace std;
const int lg=14,maxn=(1<<lg),kaf=(1<<lg);
struct segment{
struct node{
int cnt,res;
node(){
cnt=res=0;
}
};
node seg[(1<<(lg+1))];
void insert(int i){
i+=kaf;
seg[i].cnt++;
i>>=1;
while(i>0){
seg[i].cnt++;
seg[i].res=seg[(i<<1)].cnt*seg[(i<<1)^1].cnt;
i>>=1;
}
return ;
}
int pors(int i,int l,int r,int tl,int tr){
if(!(tl>=l&&tr<=r)){
return 0;
}
int m=(l+r)>>1;
if(tl<=m&&tr>m){
if(seg[i].res==1){
return 1;
}else{
seg[i].res--;
return 0;
}
}
return pors((i<<1),l,m,tl,tr)+pors((i<<1)^1,m+1,r,tl,tr);
}
}seg;
void initialize(int n) {
for(int i=0;i<n;i++){
seg.insert(i);
}
}
int hasEdge(int u, int v) {
if(u>v){
swap(u,v);
}
return seg.pors(1,0,kaf-1,u,v);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |