답안 #890210

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
890210 2023-12-20T16:53:34 Z cpptowin Uzastopni (COCI15_uzastopni) C++17
48 / 160
156 ms 35568 KB
#include<bits/stdc++.h>
#define fo(i,d,c) for(int i=d;i<=c;i++)
#define fod(i,c,d) for(int i=c;i>=d;i--)
#define maxn 10010
#define N 1010
#define fi first
#define se second
#define pb emplace_back
#define en cout<<"\n";
#define inf 1000000000
#define pii pair<int,int>
#define vii vector<pii>
#define lb(x) x&-x
#define bit(i,j) ((i>>j)&1)
#define offbit(i,j) (i^(1<<j))
#define onbit(i,j) (i|(1<<j))
#define vi vector<int>
template <typename T1, typename T2> bool minimize(T1 &a, T2 b){if (a > b) {a = b; return true;} return false;}
template <typename T1, typename T2> bool maximize(T1 &a, T2 b){if (a < b) {a = b; return true;} return false;}
using namespace std;
bitset<105> dp[10010][110];
vi ke[maxn];
int v[maxn];
int n;
void dfs(int u)
{
    for(int v : ke[u]) dfs(v);
    bitset<105> f[110];
    f[v[u]][v[u]] = 1;
    for(int v : ke[u])
    {
        fo(i,1,100) f[i] |= dp[v][i];
    }
    dp[u][v[u]][v[u]] = 1;
    fo(i,1,100) fo(j,1,100)
    {
        if(f[i + 1][j] and i == v[u]) dp[u][i][j] = 1;
        if(f[i][j - 1] and j == v[u]) dp[u][i][j] = 1;
        if(f[i][v[u] - 1] and f[v[u] + 1][j]) dp[u][i][j] = 1;
    }
}
main()
{
    #define name "TASK"
    if(fopen(name".inp","r"))
    {
       freopen(name".inp","r",stdin);
       freopen(name".out","w",stdout);
    }
    ios_base::sync_with_stdio(false);cin.tie(NULL);
    cin >> n;
    fo(i,1,n) cin >> v[i];
    fo(i,1,n - 1)
    {
        int u,v;
        cin >> u >> v;
        ke[u].pb(v);
    }
    dfs(1);
    int ans = 0;
    fo(i,1,100) ans += dp[1][i].count();
    cout << ans;
}

Compilation message

uzastopni.cpp:42:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   42 | main()
      | ^~~~
uzastopni.cpp: In function 'int main()':
uzastopni.cpp:47:15: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |        freopen(name".inp","r",stdin);
      |        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
uzastopni.cpp:48:15: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   48 |        freopen(name".out","w",stdout);
      |        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2652 KB Output isn't correct
2 Incorrect 1 ms 2652 KB Output isn't correct
3 Incorrect 2 ms 2652 KB Output isn't correct
4 Correct 3 ms 2652 KB Output is correct
5 Incorrect 4 ms 2652 KB Output isn't correct
6 Correct 2 ms 2652 KB Output is correct
7 Correct 2 ms 2652 KB Output is correct
8 Correct 2 ms 2904 KB Output is correct
9 Incorrect 2 ms 2652 KB Output isn't correct
10 Incorrect 2 ms 2652 KB Output isn't correct
11 Incorrect 141 ms 18084 KB Output isn't correct
12 Incorrect 147 ms 17984 KB Output isn't correct
13 Correct 141 ms 18136 KB Output is correct
14 Runtime error 156 ms 35568 KB Memory limit exceeded
15 Runtime error 148 ms 35412 KB Memory limit exceeded
16 Runtime error 150 ms 35412 KB Memory limit exceeded
17 Incorrect 145 ms 18264 KB Output isn't correct
18 Correct 139 ms 18008 KB Output is correct
19 Incorrect 151 ms 17920 KB Output isn't correct
20 Incorrect 139 ms 17876 KB Output isn't correct