Submission #246365

# Submission time Handle Problem Language Result Execution time Memory
246365 2020-07-08T22:47:29 Z xiryss Uzastopni (COCI15_uzastopni) C++17
88 / 160
500 ms 1224 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;
	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);
		}
	}
	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 < MAXV; ++fs)
	{
		for (int ss = fs; ss <= MAXV; ++ss)
		{
			fill(keked, keked + MAXN, 0);
			fill(used, used + MAXV, 0);

			now = { fs,ss };
			dfs(1);
			if (count(used, used + MAXV, 1) == ss - fs + 1)
			{
				++ans;
			//	cout << fs << ' ' << ss << endl;
			}
		}
	}
	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")
# Verdict Execution time Memory Grader output
1 Incorrect 191 ms 888 KB Output isn't correct
2 Correct 172 ms 768 KB Output is correct
3 Incorrect 176 ms 768 KB Output isn't correct
4 Incorrect 189 ms 888 KB Output isn't correct
5 Incorrect 169 ms 896 KB Output isn't correct
6 Correct 188 ms 896 KB Output is correct
7 Correct 174 ms 768 KB Output is correct
8 Correct 183 ms 1016 KB Output is correct
9 Incorrect 174 ms 888 KB Output isn't correct
10 Incorrect 170 ms 768 KB Output isn't correct
11 Incorrect 183 ms 1024 KB Output isn't correct
12 Correct 188 ms 1024 KB Output is correct
13 Correct 181 ms 1024 KB Output is correct
14 Correct 184 ms 1152 KB Output is correct
15 Correct 177 ms 1224 KB Output is correct
16 Correct 185 ms 1152 KB Output is correct
17 Correct 195 ms 1024 KB Output is correct
18 Correct 183 ms 1024 KB Output is correct
19 Execution timed out 925 ms 1016 KB Time limit exceeded
20 Execution timed out 929 ms 980 KB Time limit exceeded