Submission #246367

# Submission time Handle Problem Language Result Execution time Memory
246367 2020-07-08T22:56:52 Z xiryss Uzastopni (COCI15_uzastopni) C++17
88 / 160
252 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 = 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;
}
void dfs(int v)
{
	if (!bel(now, a[v])) return;
	used[a[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 (a[i] < a[v] && 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);
	}
	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(used, used + MAXV, 0);
			now = { fs,ss };
			dfs(1);
			if (count(used, used + MAXV, 1) == ss - fs + 1)
			{
				++ans;
			}
		}
	}
	cout << ans;
	//sp;
}
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 896 KB Output isn't correct
2 Correct 6 ms 896 KB Output is correct
3 Incorrect 5 ms 768 KB Output isn't correct
4 Incorrect 5 ms 768 KB Output isn't correct
5 Incorrect 6 ms 896 KB Output isn't correct
6 Correct 6 ms 896 KB Output is correct
7 Correct 8 ms 896 KB Output is correct
8 Correct 7 ms 768 KB Output is correct
9 Incorrect 6 ms 896 KB Output isn't correct
10 Incorrect 5 ms 768 KB Output isn't correct
11 Incorrect 9 ms 1024 KB Output isn't correct
12 Correct 8 ms 1024 KB Output is correct
13 Correct 13 ms 1024 KB Output is correct
14 Correct 9 ms 1152 KB Output is correct
15 Correct 9 ms 1152 KB Output is correct
16 Correct 10 ms 1152 KB Output is correct
17 Correct 16 ms 1024 KB Output is correct
18 Correct 11 ms 1024 KB Output is correct
19 Incorrect 251 ms 1016 KB Output isn't correct
20 Incorrect 252 ms 896 KB Output isn't correct