답안 #246364

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
246364 2020-07-08T22:45:24 Z xiryss Uzastopni (COCI15_uzastopni) C++17
88 / 160
265 ms 1152 KB
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("fast-math")
/*#pragma GCC optimize("section-anchors")
#pragma GCC optimize("profile-values,profile-reorder-functions,tracer")
#pragma GCC optimize("vpt")
#pragma GCC optimize("rename-registers")
#pragma GCC optimize("move-loop-invariants")
#pragma GCC optimize("unswitch-loops")
#pragma GCC optimize("function-sections")
#pragma GCC optimize("data-sections")
#pragma GCC optimize("branch-target-load-optimize")
#pragma GCC optimize("branch-target-load-optimize2")
#pragma GCC optimize("btr-bb-exclusive")*/
#pragma comment(linker, "/STACK:367077216")
#define _CRT_SECURE_NO_WARNINGS
#include <chrono>
#include <set>
#include <map>
#include <deque>
#include <string>
#include <cstdint>
#include <cmath>
#include <queue>
#include <cassert>
#include <random>
#include <bitset>
#include <iomanip>
#include <numeric>
#include <time.h>//////////////
#include <ctime>
#include <string>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
//#define endl '\n'
#define mp make_pair
#define pbc push_back
#define pob pop_back()
#define empb emplace_back
#define queuel queue<long long>
#define sqr(a) ((a) * (a))
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define pin(p) cin >> p.first >> p.second;
#define uniq(a) sort(all(a));(a).resize(unique(all(a)) - a.begin());
#define rev(v) reverse(v.begin(), v.end());
#define sout(s, c) for (auto i : s) cout << i << c;
#define pout(p) cout << p.first << " " << p.second;
#define er(v, l, r) erase(v.begin() + l, v.begin() + r);
#define vin(v) for (ll i = 0; i < v.size(); ++i) cin >> v[i];
#define vout(v, c) for (int i = 0; i < v.size(); ++i) cout << v[i] << c;
#define pushi(v, a) for (int i = 0; i < a.size(); ++i) v.push_back(a[i]);
#define fastio() ios_base::sync_with_stdio(0); cout.tie(0); cin.tie(0); srand(time(NULL))
#define dab(v) for(auto i:v)cout<<i<<' ';
#define sp system("pause")
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
using namespace std;
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
//++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++
mt19937 rnd(time(0) + 228 + 'k' + 'e' + 'k' + 'e' + 'r' + 'o' + 'f' + 'e' + 'y');
const ld EPS = 1e-5;//(cos,-sin), (sin, cos)
bool checkprime(int x)
{
	for (int i = 2; i * i <= x; ++i) if (x % i == 0) return 0;
	return 1;
}
const ld PI = acos(-1);
const int MOD7 = 1000000007;
const int MOD9 = 1000000009;
const ll INF = 1e18;
int mod = MOD7;
const int inf = 1e9;
const int MAXN = 2e4 + 1;
vector<int> g[MAXN];
int a[MAXN];
int n;
const int MAXV = 201;
pair<int, int> now;
int ans = 0;
int used[MAXV];
inline bool bel(pair<int, int> a, int b)
{
	return b >= a.first && b <= a.second;
}
bool keked[MAXN];
void dfs(int v)
{
	if (!bel(now, a[v])) return;
	used[a[v]]=1;
	keked[v] = 1;
	vector<pair<int, int>> taken;
	int nw = 1;
	for (int i : g[v])
	{
		if (!bel(now, a[i])) continue;
		if (a[i] >= a[v] && a[i] <= a[v] + nw)
		{
			if (a[i] == a[v] + nw) ++nw;
			dfs(i);
		}
	//	dfs(i, v);
	}
	rev(g[v]);
	nw = 1;
	for (int i : g[v])
	{
		if (!bel(now, a[i])) continue;
		if (a[i] <= a[v] && !keked[i] && a[i] >= a[v] - nw)
		{
			if (a[i] == a[v] - nw) ++nw;
			dfs(i);
		}
	}
	rev(g[v]);
}
signed main()
{
	fastio();
	cin >> n;
	for (int i = 1; i <= n; ++i) cin >> a[i];
	for (int i = 0; i < n - 1; ++i)
	{
		int a, b;
		cin >> a >> b;
		g[a].pbc(b);
//		g[b].pbc(a);
	}
	for (int i = 1; i <= n; ++i)
	{
		sort(all(g[i]), [&](int aa, int bb) {return a[aa] < a[bb]; });
	}
	for (int fs = 1; fs <= 100; ++fs)
	{
		for (int ss = fs; ss <= 100; ++ss)
		{
			fill(keked, keked + MAXN, 0);
			now = { fs,ss };
			dfs(1);
			if (count(used, used + MAXV, 1) == ss - fs + 1)
			{
				++ans;
			//	cout << fs << ' ' << ss << endl;
			}
			fill(used, used + MAXV, 0);
		}
	}
	cout << ans;
	//sp;
}

/*
1 2 1 9 2 8 3 9 3 0 0 0 0 0
3 1 5 2 1 2 4 3 6 0 0 0 0 0
1 4 1 6 2 7 3 5 3 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0


1 2 1 9 2 8 3 9 3 5 4 5 7 6
3 1 5 2 1 2 4 3 6 4 5 8 6 7
1 4 1 6 2 7 3 5 3 5 7 5 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0*/

Compilation message

uzastopni.cpp:16:0: warning: ignoring #pragma comment  [-Wunknown-pragmas]
 #pragma comment(linker, "/STACK:367077216")
# 결과 실행 시간 메모리 Grader output
1 Incorrect 63 ms 768 KB Output isn't correct
2 Correct 56 ms 896 KB Output is correct
3 Incorrect 48 ms 896 KB Output isn't correct
4 Incorrect 47 ms 896 KB Output isn't correct
5 Incorrect 46 ms 768 KB Output isn't correct
6 Correct 51 ms 896 KB Output is correct
7 Correct 46 ms 888 KB Output is correct
8 Correct 49 ms 896 KB Output is correct
9 Incorrect 46 ms 768 KB Output isn't correct
10 Incorrect 46 ms 768 KB Output isn't correct
11 Incorrect 50 ms 1024 KB Output isn't correct
12 Correct 54 ms 1024 KB Output is correct
13 Correct 57 ms 1144 KB Output is correct
14 Correct 50 ms 1152 KB Output is correct
15 Correct 48 ms 1152 KB Output is correct
16 Correct 50 ms 1152 KB Output is correct
17 Correct 58 ms 1024 KB Output is correct
18 Correct 52 ms 1144 KB Output is correct
19 Incorrect 265 ms 928 KB Output isn't correct
20 Incorrect 265 ms 896 KB Output isn't correct