https://www.acmicpc.net/problem/17619
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//2019 정올 2차 2번 문제 (중등)
struct s{
int a,b,pos;
};
bool compare(struct s x,struct s y)
{
//return x.a<y.a;
if(x.a<y.a)
return true;
return false;
}
int main()
{
int m,n,i,j,y,r1[1000000]={0,},r2[1000000]={0,},max1,k=0,t=0,z=0,flag=0;
int g2[1000000];
struct s log[1000000];
scanf("%d %d",&m,&n);
for(i=0;i<m;i++){
scanf("%d %d %d",&log[i].a,&log[i].b,&y);
log[i].pos=i+1;
g2[log[i].pos] = log[i].pos;
}
for(i=0;i<n;i++)
scanf("%d %d",&r1[i],&r2[i]);
sort(log,log+m,compare);
while(1)
{
max1=log[t].b;
int group = g2[log[t].pos];
for(i=t;i<m-1;i++)
{
if(log[i+1].a<=max1)
{
g2[log[i+1].pos] = group;
if(log[i+1].b>max1)
max1=log[i+1].b;
}
else
break;
}
t=i+1;
k++;
z=0;
if(t>=m)
break;
}
for(t=0;t<n;t++)
{
if(g2[r1[t]] == g2[r2[t]]) puts("1");
else puts("0");
}
return 0;
}
'정보올림피아드-KOI > BOJ' 카테고리의 다른 글
백준 : 두 박스 : 15973 (0) | 2020.03.31 |
---|---|
[백준] 신기한 수 : 17618번 - 2019 정보올림피아드 2차 중등 1번문제 (0) | 2020.03.22 |
부분수열의 합 - 1182 (0) | 2020.03.01 |
랜선 자르기 1654번 (0) | 2020.03.01 |
10816번 숫자 카드 2 (0) | 2020.02.16 |