Submission #246486

# Submission time Handle Problem Language Result Execution time Memory
246486 2020-07-09T12:01:10 Z xiryss Uzastopni (COCI15_uzastopni) C++17
160 / 160
387 ms 17528 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 + 2;
vector<int> g[MAXN];
int a[MAXN];
int n;
const int MAXV = 101;
bitset<MAXV> ava[MAXN][MAXV];
void dfs(int v)
{
	for (int i : g[v]) dfs(i);
	vector<bitset<MAXV>> tava(MAXV);
	for (int i : g[v]) for (int j = 1; j < MAXV; ++j) tava[j] = (tava[j] | ava[i][j]);
	for (int l = MAXV - 1; l >= 1; --l)
	{
		if (l == a[v])
		{
			ava[v][l][l] = 1;
			ava[v][l] = (ava[v][l] | ava[v][l + 1]);
			continue;
		}
		for (int r = 1;r <MAXV;++r)
		{
			if (a[v] >= l && a[v] <= r) continue;
			if (!tava[l][r]) continue;
			ava[v][l] = (ava[v][l] | ava[v][r + 1]);
			ava[v][l][r] = 1;
		}
	}
	for (int i = a[v] + 1; i < MAXV; ++i) for (int j = 0; j < MAXV; ++j) ava[v][i][j] = 0;
	for (int i = 1; i < a[v]; ++i) for (int j = i; j < a[v]; ++j) ava[v][i][j] = 0;
}
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);
	}
	dfs(1);
	int ans = 0;
	for (int i = 1; i < MAXV; ++i) ans += ava[1][i].count();
	cout << ans;
	sp;
}

Compilation message

uzastopni.cpp: In function 'int main()':
uzastopni.cpp:62:18: warning: ignoring return value of 'int system(const char*)', declared with attribute warn_unused_result [-Wunused-result]
 #define sp system("pause")
            ~~~~~~^~~~~~~~~
uzastopni.cpp:128:2: note: in expansion of macro 'sp'
  sp;
  ^~
# Verdict Execution time Memory Grader output
1 Correct 7 ms 768 KB Output is correct
2 Correct 8 ms 768 KB Output is correct
3 Correct 7 ms 768 KB Output is correct
4 Correct 7 ms 768 KB Output is correct
5 Correct 8 ms 768 KB Output is correct
6 Correct 8 ms 768 KB Output is correct
7 Correct 7 ms 768 KB Output is correct
8 Correct 7 ms 768 KB Output is correct
9 Correct 8 ms 768 KB Output is correct
10 Correct 8 ms 768 KB Output is correct
11 Correct 387 ms 16736 KB Output is correct
12 Correct 383 ms 16744 KB Output is correct
13 Correct 371 ms 16760 KB Output is correct
14 Correct 298 ms 17528 KB Output is correct
15 Correct 305 ms 17528 KB Output is correct
16 Correct 309 ms 17528 KB Output is correct
17 Correct 383 ms 16684 KB Output is correct
18 Correct 374 ms 16760 KB Output is correct
19 Correct 295 ms 16632 KB Output is correct
20 Correct 307 ms 16632 KB Output is correct