Submission #811531

# Submission time Handle Problem Language Result Execution time Memory
811531 2023-08-07T04:49:01 Z vjudge1 Financial Report (JOI21_financial) C++14
31 / 100
1396 ms 33280 KB
#include<bits/stdc++.h>
#define fi first
#define se second
#define ll long long
using namespace std ;
const int N = (1 << 19) ;
int n, d, cnt, a[N + 1], dp[N + 1], mx[2 * N + 1] ;
set<int> s ;
map<int, int> mp ;
void update(int l, int r, int ind, int num, int v)
{
    if(l > ind || r < ind)
        return ;
    if(l == r)
    {
        mx[v] = num ;
        return ;
    }
    int mid = (l + r) >> 1 ;
    update(l, mid, ind, num, v * 2) ;
    update(mid + 1, r, ind, num, v * 2 + 1) ;
    mx[v] = max(mx[v * 2], mx[v * 2 + 1]) ;
}
int get_max(int l, int r,int l1, int r1, int v)
{
    if(l > r1 || r < l1)
        return 0 ;
    if(l1 <= l && r <= r1)
        return mx[v] ;
    int mid = (l + r) >> 1 ;
    return max(get_max(l, mid, l1, r1, v * 2), get_max(mid + 1, r, l1, r1, v * 2 + 1)) ;
}
signed main()
{
    ios_base::sync_with_stdio( 0 ) ;
    cin.tie( 0 ) ;
    cout.tie( 0 ) ;
    cin >> n >> d ;
    for(int i = 1 ; i <= n ; i++)
    {
        cin >> a[i] ;
        s.insert(a[i]) ;
    }
    for(int i : s)
    {
        cnt++ ;
        mp[i] = cnt ;
    }
    for(int i = 1 ; i <= n ; i++)
        a[i] = mp[a[i]] ;
    if(n <= 20)
    {
        int ans = 0 ;
        for(int i = 0 ; i < (1 << n) ; i++)
        {
            int now = 0, mx = -1, ls = 1e9 ;
            for(int j = 0 ; j < n ; j++)
                if(j - ls <= d && ((1 << j) & i))
                {
                    ls = j ;
                    if(mx < a[j + 1])
                        now++ ;
                    mx = max(mx, a[j + 1]) ;
                }
            ans = max(ans, now) ;
        }
        cout << ans ;
        return 0 ;
    }
    if(d == 1)
    {
        int ans = 0 ;
        for(int i = 1 ; i <= n ; i++)
            update(1, N, i, a[i], 1) ;
        for(int i = n ; i >= 1 ; i--)
        {
            int l = i, r = n + 1 ;
            while(l + 1 < r)
            {
                int mid = (l + r) >> 1 ;
                if(get_max(1, N, i, mid, 1) > a[i])
                    r = mid ;
                else
                    l = mid ;
            }
            dp[i] = dp[r] + 1 ;
            ans = max(ans, dp[i]) ;
        }
        cout << ans ;
        return 0 ;
    }
    if(d == n)
    {
        int ans = 0 ;
        for(int i = 1 ; i <= n ; i++)
        {
            int num = get_max(1, N, 1, a[i] - 1, 1) ;
            ans = max(ans, num + 1) ;
            update(1, N, a[i], num + 1, 1) ;
        }
        cout << ans ;
        return 0 ;
    }
//    if(n <= 7000)
//    {
//        int ans = 0 ;
//        a[0] = -1 ;
//        for(int i = 1 ; i <= n ; i++)
//        {
//            int mx = 0 ;
//            for(int j = max(0, i - d) ; j < i ; j++)
//                if(a[j] < a[i])
//                    mx = max(mx, dp[j]) ;
//            dp[i] = mx + 1 ;
//            ans = max(ans, dp[i]) ;
//            cout << dp[i] << ' ' ;
//        }
//        cout << ans << '\n' ;
//        return 0 ;
//    }
    return 0 ;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 14 ms 328 KB Output is correct
16 Correct 5 ms 324 KB Output is correct
17 Correct 2 ms 212 KB Output is correct
18 Correct 85 ms 328 KB Output is correct
19 Correct 22 ms 212 KB Output is correct
20 Correct 86 ms 212 KB Output is correct
21 Correct 37 ms 212 KB Output is correct
22 Correct 74 ms 312 KB Output is correct
23 Correct 27 ms 336 KB Output is correct
24 Correct 29 ms 328 KB Output is correct
25 Correct 5 ms 340 KB Output is correct
26 Correct 9 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 14 ms 328 KB Output is correct
16 Correct 5 ms 324 KB Output is correct
17 Correct 2 ms 212 KB Output is correct
18 Correct 85 ms 328 KB Output is correct
19 Correct 22 ms 212 KB Output is correct
20 Correct 86 ms 212 KB Output is correct
21 Correct 37 ms 212 KB Output is correct
22 Correct 74 ms 312 KB Output is correct
23 Correct 27 ms 336 KB Output is correct
24 Correct 29 ms 328 KB Output is correct
25 Correct 5 ms 340 KB Output is correct
26 Correct 9 ms 212 KB Output is correct
27 Correct 1 ms 340 KB Output is correct
28 Incorrect 1 ms 340 KB Output isn't correct
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 14 ms 328 KB Output is correct
16 Correct 5 ms 324 KB Output is correct
17 Correct 2 ms 212 KB Output is correct
18 Correct 85 ms 328 KB Output is correct
19 Correct 22 ms 212 KB Output is correct
20 Correct 86 ms 212 KB Output is correct
21 Correct 37 ms 212 KB Output is correct
22 Correct 74 ms 312 KB Output is correct
23 Correct 27 ms 336 KB Output is correct
24 Correct 29 ms 328 KB Output is correct
25 Correct 5 ms 340 KB Output is correct
26 Correct 9 ms 212 KB Output is correct
27 Correct 1 ms 340 KB Output is correct
28 Incorrect 1 ms 340 KB Output isn't correct
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1177 ms 5044 KB Output is correct
2 Correct 1079 ms 5044 KB Output is correct
3 Correct 1048 ms 5004 KB Output is correct
4 Correct 1239 ms 29008 KB Output is correct
5 Correct 1199 ms 33280 KB Output is correct
6 Correct 1291 ms 33172 KB Output is correct
7 Correct 1228 ms 33052 KB Output is correct
8 Correct 1396 ms 33128 KB Output is correct
9 Correct 1182 ms 33108 KB Output is correct
10 Correct 1350 ms 33192 KB Output is correct
11 Correct 1249 ms 33212 KB Output is correct
12 Correct 1271 ms 33220 KB Output is correct
13 Correct 1220 ms 33204 KB Output is correct
14 Correct 1323 ms 33184 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 55 ms 1532 KB Output is correct
2 Correct 138 ms 1544 KB Output is correct
3 Correct 138 ms 1848 KB Output is correct
4 Correct 417 ms 32052 KB Output is correct
5 Correct 361 ms 32040 KB Output is correct
6 Correct 378 ms 31948 KB Output is correct
7 Correct 219 ms 31928 KB Output is correct
8 Correct 227 ms 31976 KB Output is correct
9 Correct 237 ms 31732 KB Output is correct
10 Correct 293 ms 31940 KB Output is correct
11 Correct 382 ms 32040 KB Output is correct
12 Correct 300 ms 32044 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 14 ms 328 KB Output is correct
16 Correct 5 ms 324 KB Output is correct
17 Correct 2 ms 212 KB Output is correct
18 Correct 85 ms 328 KB Output is correct
19 Correct 22 ms 212 KB Output is correct
20 Correct 86 ms 212 KB Output is correct
21 Correct 37 ms 212 KB Output is correct
22 Correct 74 ms 312 KB Output is correct
23 Correct 27 ms 336 KB Output is correct
24 Correct 29 ms 328 KB Output is correct
25 Correct 5 ms 340 KB Output is correct
26 Correct 9 ms 212 KB Output is correct
27 Correct 1 ms 340 KB Output is correct
28 Incorrect 1 ms 340 KB Output isn't correct
29 Halted 0 ms 0 KB -