답안 #147890

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
147890 2019-08-31T05:34:07 Z cheetose Long Mansion (JOI17_long_mansion) C++11
10 / 100
3000 ms 31868 KB
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<bitset>
#include<string>
#include<stack>
#include<set>
#include<unordered_set>
#include<map>
#include<unordered_map>
#include<cstring>
#include<complex>
#include<cmath>
#include<iomanip>
#include<numeric>
#include<algorithm>
#include<list>
#include<functional>
#include<cassert>
#define mp make_pair
#define pb push_back
#define X first
#define Y second
#define y0 y12
#define y1 y22
#define INF 987654321987654321
#define PI 3.141592653589793238462643383279502884
#define fup(i,a,b,c) for(int (i)=(a);(i)<=(b);(i)+=(c))
#define fdn(i,a,b,c) for(int (i)=(a);(i)>=(b);(i)-=(c))
#define MEM0(a) memset((a),0,sizeof(a));
#define MEM_1(a) memset((a),-1,sizeof(a));
#define ALL(a) a.begin(),a.end()
#define SYNC ios_base::sync_with_stdio(false);cin.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll> Pll;
typedef pair<ld, ld> Pd;
typedef vector<int> Vi;
typedef vector<ll> Vll;
typedef vector<double> Vd;
typedef vector<Pi> VPi;
typedef vector<Pll> VPll;
typedef vector<Pd> VPd;
typedef tuple<int, int, int> iii;
typedef tuple<int,int,int,int> iiii;
typedef tuple<ll, ll, ll> LLL;
typedef vector<iii> Viii;
typedef vector<LLL> VLLL;
typedef complex<double> base;
const ll MOD = 1000000007;
ll POW(ll a, ll b, ll MMM = MOD) {ll ret=1; for(;b;b>>=1,a=(a*a)%MMM)if(b&1)ret=(ret*a)% MMM; return ret; }
ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; }
ll lcm(ll a, ll b) { if (a == 0 || b == 0)return a + b; return a*(b / gcd(a, b)); }
int dx[] = { 0,1,0,-1,1,1,-1,-1 }, dy[] = { 1,0,-1,0,1,-1,1,-1 };

int L[500001],R[500001];
int tol[500001],tor[500001];
int a[500001],t[500001];
Vi v[500001];
int n,q;
int main() {
	MEM_1(tol);MEM_1(tor);
	scanf("%d",&n);
	fup(i,1,n,1)L[i]=R[i]=i;
	fup(i,1,n-1,1)scanf("%d",a+i);
	fup(i,1,n,1)
	{
		int c;
		scanf("%d",&c);
		while(c--)
		{
			int x;
			scanf("%d",&x);
			v[i].pb(x);
		}
	}
	MEM_1(t);
	fup(i,1,n-1,1)
	{
		for(int x:v[i])t[x]=i;
		tor[i]=t[a[i]];
	}
	MEM_1(t);
	fdn(i,n,2,1)
	{
		for(int x:v[i])t[x]=i;
		tol[i]=t[a[i-1]];
	}
	fup(i,1,n,1)
	{
		int &l=L[i],&r=R[i];
		while(1)
		{
			if(l>1 && tol[l]!=-1 && tol[l]<=r)
			{
				l--;
				l=min(l,L[l]);
				r=max(r,R[l]);
			}
			else if(r<n && tor[r]!=-1 && tor[r]>=l)
			{
				r++;
				l=min(l,L[r]);
				r=max(r,R[r]);
			}
			else break;
		}
	}
	fdn(i,n,1,1)
	{
		int &l=L[i],&r=R[i];
		while(1)
		{
			if(l>1 && tol[l]!=-1 && tol[l]<=r)
			{
				l--;
				l=min(l,L[l]);
				r=max(r,R[l]);
			}
			else if(r<n && tor[r]!=-1 && tor[r]>=l)
			{
				r++;
				l=min(l,L[r]);
				r=max(r,R[r]);
			}
			else break;
		}
	}
	scanf("%d",&q);
	while(q--)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		puts(L[x]<=y && R[x]>=y?"YES":"NO");
	}
}

Compilation message

long_mansion.cpp: In function 'int main()':
long_mansion.cpp:70:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
  ~~~~~^~~~~~~~~
long_mansion.cpp:72:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  fup(i,1,n-1,1)scanf("%d",a+i);
                ~~~~~^~~~~~~~~~
long_mansion.cpp:76:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&c);
   ~~~~~^~~~~~~~~
long_mansion.cpp:80:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d",&x);
    ~~~~~^~~~~~~~~
long_mansion.cpp:136:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&q);
  ~~~~~^~~~~~~~~
long_mansion.cpp:140:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d",&x,&y);
   ~~~~~^~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 18044 KB Output is correct
2 Correct 28 ms 18172 KB Output is correct
3 Correct 52 ms 18296 KB Output is correct
4 Correct 21 ms 18168 KB Output is correct
5 Correct 20 ms 18044 KB Output is correct
6 Correct 21 ms 18164 KB Output is correct
7 Correct 22 ms 18040 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 18044 KB Output is correct
2 Correct 28 ms 18172 KB Output is correct
3 Correct 52 ms 18296 KB Output is correct
4 Correct 21 ms 18168 KB Output is correct
5 Correct 20 ms 18044 KB Output is correct
6 Correct 21 ms 18164 KB Output is correct
7 Correct 22 ms 18040 KB Output is correct
8 Correct 146 ms 24084 KB Output is correct
9 Correct 153 ms 23864 KB Output is correct
10 Correct 157 ms 24300 KB Output is correct
11 Correct 176 ms 24568 KB Output is correct
12 Correct 138 ms 23544 KB Output is correct
13 Correct 142 ms 24148 KB Output is correct
14 Correct 143 ms 24296 KB Output is correct
15 Correct 144 ms 24184 KB Output is correct
16 Correct 140 ms 23928 KB Output is correct
17 Correct 151 ms 24184 KB Output is correct
18 Correct 149 ms 24252 KB Output is correct
19 Correct 143 ms 24184 KB Output is correct
20 Correct 138 ms 24220 KB Output is correct
21 Correct 134 ms 23928 KB Output is correct
22 Correct 149 ms 24056 KB Output is correct
23 Correct 145 ms 24052 KB Output is correct
24 Correct 143 ms 23900 KB Output is correct
25 Correct 143 ms 23928 KB Output is correct
26 Correct 144 ms 23928 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2259 ms 31868 KB Output is correct
2 Execution timed out 3045 ms 24568 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 20 ms 18044 KB Output is correct
2 Correct 28 ms 18172 KB Output is correct
3 Correct 52 ms 18296 KB Output is correct
4 Correct 21 ms 18168 KB Output is correct
5 Correct 20 ms 18044 KB Output is correct
6 Correct 21 ms 18164 KB Output is correct
7 Correct 22 ms 18040 KB Output is correct
8 Correct 146 ms 24084 KB Output is correct
9 Correct 153 ms 23864 KB Output is correct
10 Correct 157 ms 24300 KB Output is correct
11 Correct 176 ms 24568 KB Output is correct
12 Correct 138 ms 23544 KB Output is correct
13 Correct 142 ms 24148 KB Output is correct
14 Correct 143 ms 24296 KB Output is correct
15 Correct 144 ms 24184 KB Output is correct
16 Correct 140 ms 23928 KB Output is correct
17 Correct 151 ms 24184 KB Output is correct
18 Correct 149 ms 24252 KB Output is correct
19 Correct 143 ms 24184 KB Output is correct
20 Correct 138 ms 24220 KB Output is correct
21 Correct 134 ms 23928 KB Output is correct
22 Correct 149 ms 24056 KB Output is correct
23 Correct 145 ms 24052 KB Output is correct
24 Correct 143 ms 23900 KB Output is correct
25 Correct 143 ms 23928 KB Output is correct
26 Correct 144 ms 23928 KB Output is correct
27 Correct 2259 ms 31868 KB Output is correct
28 Execution timed out 3045 ms 24568 KB Time limit exceeded
29 Halted 0 ms 0 KB -