Submission #1019128

# Submission time Handle Problem Language Result Execution time Memory
1019128 2024-07-10T13:54:21 Z Cookie Uzastopni (COCI15_uzastopni) C++14
64 / 160
500 ms 15704 KB
#include<bits/stdc++.h>
#include<fstream>
using namespace std;
#define sz(a) (int)a.size()
#define ALL(v) v.begin(), v.end()
#define ALLR(v) v.rbegin(), v.rend()
#define ll long long
#define pb push_back
#define forr(i, a, b) for(int i = a; i < b; i++)
#define dorr(i, a, b) for(int i = a; i >= b; i--)
#define ld double
#define vt vector
#include<fstream>
#define fi first
#define se second
#define pll pair<ll, ll>
#define pii pair<int, int>
#define mpp make_pair
const ld PI = 3.14159265359, prec = 1e-9;;
//using u128 = __uint128_t;
const int cox[4] = {1, 0, -1, 0};
const int coy[4] = {0, -1, 0, 1};
const ll mod = 998244353, pr = 31;
const int mxn = 1e4 + 5, mxs = 3e5 * 50, sq = 500, mxv = 10000 + 1;
const int max_iter = 8e4, global_iter = 15e5 + 5;
//const int base = (1 <<18);
const ll inf = 1e9 + 5, neg = -69420, inf2 = 1e14;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int n;
bitset<mxv>dp[105][105], pre[105][105];
int v[mxn + 1];
vt<int>adj[mxn + 1];
void dfs(int s, int p){
    pre[v[s]][v[s]][s] = dp[v[s]][v[s]][s] = 1;
    for(auto i: adj[s]){
        if(i != p){
            dfs(i, s);
            for(int j = 2; j <= 100; j++){
                for(int k = 1; k + j - 1 <= 100; k++){
                    int l = k, r = k + j - 1;
                    for(int z = l; z < r; z++){
                        if((pre[l][z][s] || dp[l][z][i]) && (pre[z + 1][r][s] || dp[z + 1][r][i])){
                            dp[l][r][s] = 1;
                        }
                    }
                }
            }
            for(int j = 1; j <= 100; j++){
                for(int k = j; k <= 100; k++){
                    //if(dp[j][k][s])cout << "aa";
                    pre[j][k][s] = dp[j][k][s]; 
                }
            }
        }
    }
    for(int i = 1; i <= 100; i++){
        for(int j = i; j <= 100; j++){
            if(i > v[s] || j < v[s])dp[i][j][s] = 0;
        }
    }
}
void solve(){
    cin >> n;
    for(int i = 1; i <= n; i++){
        cin >> v[i];
    }
    for(int i = 1; i < n; i++){
        int a, b; cin >> a >> b;
        adj[a].pb(b); adj[b].pb(a);
    }
    dfs(1, -1);
    int res = 0;
    for(int i = 1; i <= 100; i++){
        for(int j = i; j <= 100; j++){
            
            res += dp[i][j][1];
        }
    }
    cout << res;
}
 
 
 
signed main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    //freopen("KHONG.inp", "r", stdin);
    //freopen("KHONG.out", "w", stdout);
    int tt; tt = 1;
    while(tt--)solve();
    return(0);
}
# Verdict Execution time Memory Grader output
1 Incorrect 22 ms 13404 KB Output isn't correct
2 Correct 28 ms 13336 KB Output is correct
3 Incorrect 36 ms 13400 KB Output isn't correct
4 Correct 36 ms 13400 KB Output is correct
5 Correct 47 ms 13404 KB Output is correct
6 Correct 38 ms 13912 KB Output is correct
7 Correct 38 ms 13660 KB Output is correct
8 Correct 40 ms 13652 KB Output is correct
9 Correct 40 ms 13664 KB Output is correct
10 Correct 41 ms 13656 KB Output is correct
11 Execution timed out 1072 ms 14404 KB Time limit exceeded
12 Execution timed out 1059 ms 14164 KB Time limit exceeded
13 Execution timed out 1020 ms 13916 KB Time limit exceeded
14 Execution timed out 1043 ms 15696 KB Time limit exceeded
15 Execution timed out 1066 ms 15700 KB Time limit exceeded
16 Execution timed out 1022 ms 15704 KB Time limit exceeded
17 Execution timed out 1045 ms 14140 KB Time limit exceeded
18 Execution timed out 1065 ms 13916 KB Time limit exceeded
19 Execution timed out 1053 ms 14004 KB Time limit exceeded
20 Execution timed out 1020 ms 14164 KB Time limit exceeded