답안 #447480

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
447480 2021-07-26T13:56:11 Z raid Trampoline (info1cup20_trampoline) C++17
컴파일 오류
0 ms 0 KB
#include <iostream>
#include <algorithm>
#include <map>
#define pii pair<int, int>
#define f first
#define s second

using namespace std;

const int MaxN = 200005;
const int MaxLg = 18;
const int INF = 1e9; 

pii gt[MaxN];
pii lim[MaxN]; 

int anc[MaxLg][MaxN];
int lg[MaxN];
map<int, int> conv;

struct cmp {
  bool operator () ( const pii &a, const pii &b ) {
	return (a.s < b.s) || (a.s == b.s && a.f < b.f);
  }
};

int main() {
  int l, c, n, ix = 0, t, xst, yst, xdr, ydr;

  cin >> l >> c >> n;
  for ( int i = 0; i < n; ++i ) {
	cin >> gt[i].s >> gt[i].f;
  }
  for ( int i = 2; i <= n; ++i ) {
	lg[i] = lg[i / 2] + 1;
  }
  gt[n].s = gt[n].f = INF + 1;
  sort( gt, gt + n, cmp() );
  lim[ix].f = 0;
  conv[gt[0].s] = ix;
  for ( int i = 1; i < n; ++i ) {
	if ( gt[i - 1].s != gt[i].s ) {
	  lim[ix++].s = i;
	  lim[ix].f = i;
	  conv[gt[i].s] = ix;
	}
  }
  lim[ix++].s = n;
  for ( int i = 0; i < n; ++i ) {
	int ix_now = conv[gt[i].s];
	if ( ix_now + 1 >= ix ) {
	  anc[0][i] = n;
	} else {
	  if ( gt[lim[ix_now + 1].f].s == gt[i].s + 1 ) {
		anc[0][i] = (lower_bound( gt + lim[ix_now + 1].f, gt + lim[ix_now + 1].s, gt[i] ) - gt);
	  } else {
        anc[0][i] = n;
	  }
	}
  }
  prop( lim[ix - 1].f, lim[ix - 1].s, n );
  for ( int q = 1; q < MaxLg; ++q ) {
	for ( int i = 0; i < n; ++i ) {
	  anc[q][i] = anc[q - 1][anc[q - 1][i]];
	}
  }
  cin >> t; 
  while ( t-- ) {
	cin >> xst >> yst >> xdr >> ydr;
    if ( xdr - xst > n || xdr < xst || ydr < yst ) {
	  cout << "No\n";
	  continue;
	}
	if ( xst == xdr ) {
	  cout << "Yes\n";
	  continue;
	}
    int pos = lower_bound( gt + lim[conv[xst]].f, gt + lim[conv[xst]].s, make_pair( yst, xst ) ) - gt;
    int k = xdr - xst - 1;
	while ( k ) {
	  pos = anc[lg[k]][pos];
	  k -= (1 << lg[k]); 
	}
	if ( gt[pos].s == xdr - 1 && gt[pos].f <= ydr ) {
	  cout << "Yes\n";
	} else {
	  cout << "No\n";
	}
  }
  return 0;
}

Compilation message

trampoline.cpp: In function 'int main()':
trampoline.cpp:61:3: error: 'prop' was not declared in this scope
   61 |   prop( lim[ix - 1].f, lim[ix - 1].s, n );
      |   ^~~~