Submission #246363

# Submission time Handle Problem Language Result Execution time Memory
246363 2020-07-08T22:41:18 Z xiryss Uzastopni (COCI15_uzastopni) C++17
88 / 160
258 ms 1024 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 = 1e4 + 1;
vector<int> g[MAXN];
int a[MAXN];
int n;
const int MAXV = 101;
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;
	//ssp;
}

/*
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 46 ms 640 KB Output isn't correct
2 Correct 46 ms 640 KB Output is correct
3 Incorrect 26 ms 640 KB Output isn't correct
4 Incorrect 27 ms 640 KB Output isn't correct
5 Incorrect 46 ms 640 KB Output isn't correct
6 Correct 29 ms 640 KB Output is correct
7 Correct 27 ms 640 KB Output is correct
8 Correct 26 ms 640 KB Output is correct
9 Incorrect 26 ms 640 KB Output isn't correct
10 Incorrect 27 ms 644 KB Output isn't correct
11 Incorrect 29 ms 896 KB Output isn't correct
12 Correct 28 ms 896 KB Output is correct
13 Correct 34 ms 896 KB Output is correct
14 Correct 29 ms 1024 KB Output is correct
15 Correct 29 ms 1024 KB Output is correct
16 Correct 29 ms 1024 KB Output is correct
17 Correct 37 ms 896 KB Output is correct
18 Correct 31 ms 896 KB Output is correct
19 Incorrect 258 ms 1016 KB Output isn't correct
20 Incorrect 247 ms 768 KB Output isn't correct