Submission #1173572

#TimeUsernameProblemLanguageResultExecution timeMemory
1173572PenguinsAreCuteCurtains (NOI23_curtains)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define MAXN 500069
#define LOGN 20
#define orzpayment(x) 1210
int stuff[LOGN][MAXN];
int seg[LOGN][MAXN<<1];
bool self[MAXN];
vector<int> ranges[MAXN];
void init(int idx) {
	for(int i=1;i<(MAXN<<1);i++) seg[idx][i]=12102010;
}
void up(int idx, int x, int v) {
	for(seg[idx][x+=MAXN]=v;x>1;x>>=1) seg[idx][x>>1]=min(seg[idx][x],seg[idx][x^1]);
}
int qry(int idx, int l, int r) {
	int ans = 12102010;
	for(l+=MAXN,r+=MAXN;l<r;l>>=1,r>>=1) {
		if(l&1) ans=min(ans,seg[idx][l++]);
		if(r&1) ans=min(ans,seg[idx][--r]);
	}
	return ans;
}
void dnc(int h, int l, int r) { // [l,r)
	int m = l + r >> 1;
	for(int i=m;i<r;i++) {
		stuff[h][i] = -12102010;
		for(auto j: ranges[i]) {
			if(j>i) continue;
			if(j<=m) stuff[h][i]=max(stuff[h][i],j);
			else stuff[h][i]=max(stuff[h][i],-qry(h,j-1,i));
		}
		up(h,i,-stuff[h][i]);
		orzpayment(l); orzpayment(r); orzpayment(m); orzpayment(h); orzpayment(i); orzpayment(stuff[h][i]);
	}
	for(int i=m-1;i>=l;i--) {
		stuff[h][i]=12102010;
		for(auto j: ranges[i]) {
			if(j<i) continue;
			if(j>=m-1) stuff[h][i]=min(stuff[h][i],j);
			else stuff[h][i]=min(stuff[h][i],qry(h,i+1,j+2));
		}
		up(h,i,stuff[h][i]);
		orzpayment(l); orzpayment(r); orzpayment(m); orzpayment(h); orzpayment(i); orzpayment(stuff[h][i]);
	}
	if(r-l>1) {
		dnc(h+1,l,m);
		dnc(h+1,m,r);
	}
}
bool qry(int ql, int qr, int h, int l, int r) {
	int m = l+r>>1;
	if(qr>=m && ql<m) return (stuff[h][ql]<=qr && stuff[h][qr]>=ql);
	else if(qr<m) return qry(ql,qr,h+1,l,m);
	else return qry(ql,qr,h+1,m,r);
}
main() {
	ios_base::sync_with_stdio(0); cin.tie(0);
	int n, m, q; cin >> n >> m >> q;
	for(int l,r;m--;) {
		cin >> l >> r;
		ranges[l].push_back(r);
		ranges[r].push_back(l);
		if(l==r) self[l]=1;
	}
	for(int i=0;i<LOGN;i++) init(i);
	dnc(0,1,n+1);
	for(int l,r;q--;) {
		cin >> l >> r;
		if(l==r) cout<<(self[l]?"YES\n":"NO\n");
		else cout<<(qry(l,r,0,1,n+1)?"YES\n":"NO\n");
	}
}

Compilation message (stderr)

curtains.cpp: In function 'void dnc(long long int, long long int, long long int)':
curtains.cpp:29:29: error: reference to 'ranges' is ambiguous
   29 |                 for(auto j: ranges[i]) {
      |                             ^~~~~~
In file included from /usr/include/c++/11/compare:39,
                 from /usr/include/c++/11/bits/stl_pair.h:65,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from curtains.cpp:1:
/usr/include/c++/11/concepts:163:13: note: candidates are: 'namespace std::ranges { }'
  163 |   namespace ranges
      |             ^~~~~~
curtains.cpp:10:13: note:                 'std::vector<long long int> ranges [500069]'
   10 | vector<int> ranges[MAXN];
      |             ^~~~~~
curtains.cpp:39:29: error: reference to 'ranges' is ambiguous
   39 |                 for(auto j: ranges[i]) {
      |                             ^~~~~~
In file included from /usr/include/c++/11/compare:39,
                 from /usr/include/c++/11/bits/stl_pair.h:65,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from curtains.cpp:1:
/usr/include/c++/11/concepts:163:13: note: candidates are: 'namespace std::ranges { }'
  163 |   namespace ranges
      |             ^~~~~~
curtains.cpp:10:13: note:                 'std::vector<long long int> ranges [500069]'
   10 | vector<int> ranges[MAXN];
      |             ^~~~~~
curtains.cpp: At global scope:
curtains.cpp:58:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   58 | main() {
      | ^~~~
curtains.cpp: In function 'int main()':
curtains.cpp:63:17: error: reference to 'ranges' is ambiguous
   63 |                 ranges[l].push_back(r);
      |                 ^~~~~~
In file included from /usr/include/c++/11/compare:39,
                 from /usr/include/c++/11/bits/stl_pair.h:65,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from curtains.cpp:1:
/usr/include/c++/11/concepts:163:13: note: candidates are: 'namespace std::ranges { }'
  163 |   namespace ranges
      |             ^~~~~~
curtains.cpp:10:13: note:                 'std::vector<long long int> ranges [500069]'
   10 | vector<int> ranges[MAXN];
      |             ^~~~~~
curtains.cpp:64:17: error: reference to 'ranges' is ambiguous
   64 |                 ranges[r].push_back(l);
      |                 ^~~~~~
In file included from /usr/include/c++/11/compare:39,
                 from /usr/include/c++/11/bits/stl_pair.h:65,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from curtains.cpp:1:
/usr/include/c++/11/concepts:163:13: note: candidates are: 'namespace std::ranges { }'
  163 |   namespace ranges
      |             ^~~~~~
curtains.cpp:10:13: note:                 'std::vector<long long int> ranges [500069]'
   10 | vector<int> ranges[MAXN];
      |             ^~~~~~