Submission #846849

# Submission time Handle Problem Language Result Execution time Memory
846849 2023-09-08T14:21:45 Z Abito Financial Report (JOI21_financial) C++17
45 / 100
405 ms 271540 KB
#include <bits/stdc++.h>
#define F first
#define S second
#define pb push_back
#define ppb pop_back
#define ep insert
#define endl '\n'
#define elif else if
#define pow pwr
#define sqrt sqrtt
//#define int long long
#define y1 YONE
typedef unsigned long long ull;
using namespace std;
const int N=3e5+5,M=405;
int a[N],n,d,bit[N],seg[4*N+5],b[N],dp[M][M][M];
bool vis[M][M][M];
void upd(int x){
    while (x<=n){
        bit[x]++;
        x+=x&-x;
    }return;
}int calc(int x){
    int y=0;
    while (x){
        y+=bit[x];
        x-=x&-x;
    }return y;
}
int rec(int i,int last,int mx){
    if (i-last>d && last) return INT_MIN;
    if (i>n && last!=n) return INT_MIN;
    if (i>n) return 0;
    if (vis[i][last][mx]) return dp[i][last][mx];
    vis[i][last][mx]=true;
    int nextmx=mx;
    if (a[i]>a[mx]) nextmx=i;
    return dp[i][last][mx]=max(rec(i+1,last,mx),rec(i+1,i,nextmx)+bool(nextmx==i));
}
int edit(int node,int l,int r,int idx,int val){
    if (l==r) return seg[node]=val;
    int mid=(l+r)/2;
    if (idx<=mid) return seg[node]=max(edit(node*2,l,mid,idx,val),seg[node*2+1]);
    return seg[node]=max(edit(node*2+1,mid+1,r,idx,val),seg[node*2]);
}
int query(int node,int l,int r,int lx,int rx){
    if (r<lx || l>rx) return 0;
    if (l>=lx && r<=rx) return seg[node];
    int mid=(l+r)/2;
    return max(query(node*2,l,mid,lx,rx),query(node*2+1,mid+1,r,lx,rx));
}
int32_t main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    cin>>n>>d;
    for (int i=1;i<=n;i++) cin>>a[i];
    a[0]=INT_MIN;
    if (d==1){
        stack<int> s;
        for (int i=1;i<=n;i++){
            while (!s.empty()){
                if (a[s.top()]<a[i]) s.pop();
                else{
                    b[i]=s.top();
                    break;
                }
            }s.push(i);
        }
        int ans=0;
        for (int i=n;i;i--){
            upd(b[i]+1);
            ans=max(ans,calc(i));
        }cout<<ans<<endl;
        return 0;
    }
    if (d==n){
        map<int,int> mp;mp[INT_MIN]++;
        for (int i=1;i<=n;i++) mp[a[i]]++;
        int c=0;
        for (auto u:mp) mp[u.F]=c++;
        for (int i=1;i<=n;i++){
            a[i]=mp[a[i]];
            edit(1,1,n,a[i],query(1,1,n,0,a[i]-1)+1);
        }cout<<query(1,1,n,0,4*N+4)<<endl;
        return 0;
    }cout<<rec(1,0,0)<<endl;
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2392 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 0 ms 2396 KB Output is correct
6 Correct 1 ms 4508 KB Output is correct
7 Correct 1 ms 4440 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 6492 KB Output is correct
14 Correct 1 ms 8540 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 2 ms 14792 KB Output is correct
17 Correct 2 ms 14684 KB Output is correct
18 Correct 2 ms 16988 KB Output is correct
19 Correct 2 ms 16988 KB Output is correct
20 Correct 1 ms 2396 KB Output is correct
21 Correct 2 ms 16988 KB Output is correct
22 Correct 2 ms 16988 KB Output is correct
23 Correct 0 ms 2396 KB Output is correct
24 Correct 1 ms 4444 KB Output is correct
25 Correct 2 ms 14940 KB Output is correct
26 Correct 2 ms 14940 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2392 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 0 ms 2396 KB Output is correct
6 Correct 1 ms 4508 KB Output is correct
7 Correct 1 ms 4440 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 6492 KB Output is correct
14 Correct 1 ms 8540 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 2 ms 14792 KB Output is correct
17 Correct 2 ms 14684 KB Output is correct
18 Correct 2 ms 16988 KB Output is correct
19 Correct 2 ms 16988 KB Output is correct
20 Correct 1 ms 2396 KB Output is correct
21 Correct 2 ms 16988 KB Output is correct
22 Correct 2 ms 16988 KB Output is correct
23 Correct 0 ms 2396 KB Output is correct
24 Correct 1 ms 4444 KB Output is correct
25 Correct 2 ms 14940 KB Output is correct
26 Correct 2 ms 14940 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 53 ms 262632 KB Output is correct
29 Correct 29 ms 250712 KB Output is correct
30 Correct 36 ms 255808 KB Output is correct
31 Correct 88 ms 271540 KB Output is correct
32 Correct 1 ms 2396 KB Output is correct
33 Correct 30 ms 264588 KB Output is correct
34 Correct 30 ms 265044 KB Output is correct
35 Correct 31 ms 265420 KB Output is correct
36 Correct 55 ms 269568 KB Output is correct
37 Correct 27 ms 260692 KB Output is correct
38 Correct 28 ms 259072 KB Output is correct
39 Correct 43 ms 266900 KB Output is correct
40 Correct 50 ms 268112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2392 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 0 ms 2396 KB Output is correct
6 Correct 1 ms 4508 KB Output is correct
7 Correct 1 ms 4440 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 6492 KB Output is correct
14 Correct 1 ms 8540 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 2 ms 14792 KB Output is correct
17 Correct 2 ms 14684 KB Output is correct
18 Correct 2 ms 16988 KB Output is correct
19 Correct 2 ms 16988 KB Output is correct
20 Correct 1 ms 2396 KB Output is correct
21 Correct 2 ms 16988 KB Output is correct
22 Correct 2 ms 16988 KB Output is correct
23 Correct 0 ms 2396 KB Output is correct
24 Correct 1 ms 4444 KB Output is correct
25 Correct 2 ms 14940 KB Output is correct
26 Correct 2 ms 14940 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 53 ms 262632 KB Output is correct
29 Correct 29 ms 250712 KB Output is correct
30 Correct 36 ms 255808 KB Output is correct
31 Correct 88 ms 271540 KB Output is correct
32 Correct 1 ms 2396 KB Output is correct
33 Correct 30 ms 264588 KB Output is correct
34 Correct 30 ms 265044 KB Output is correct
35 Correct 31 ms 265420 KB Output is correct
36 Correct 55 ms 269568 KB Output is correct
37 Correct 27 ms 260692 KB Output is correct
38 Correct 28 ms 259072 KB Output is correct
39 Correct 43 ms 266900 KB Output is correct
40 Correct 50 ms 268112 KB Output is correct
41 Correct 1 ms 4444 KB Output is correct
42 Runtime error 41 ms 23096 KB Execution killed with signal 11
43 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 29 ms 6236 KB Output is correct
2 Correct 31 ms 5344 KB Output is correct
3 Correct 33 ms 4952 KB Output is correct
4 Correct 33 ms 4952 KB Output is correct
5 Correct 32 ms 4948 KB Output is correct
6 Correct 33 ms 4956 KB Output is correct
7 Correct 45 ms 2908 KB Output is correct
8 Correct 29 ms 6228 KB Output is correct
9 Correct 42 ms 4956 KB Output is correct
10 Correct 31 ms 5724 KB Output is correct
11 Correct 33 ms 4956 KB Output is correct
12 Correct 34 ms 5176 KB Output is correct
13 Correct 29 ms 4956 KB Output is correct
14 Correct 29 ms 5176 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 6992 KB Output is correct
2 Correct 89 ms 3168 KB Output is correct
3 Correct 137 ms 8492 KB Output is correct
4 Correct 379 ms 24324 KB Output is correct
5 Correct 348 ms 24484 KB Output is correct
6 Correct 381 ms 24656 KB Output is correct
7 Correct 194 ms 26284 KB Output is correct
8 Correct 191 ms 24076 KB Output is correct
9 Correct 157 ms 25800 KB Output is correct
10 Correct 268 ms 24008 KB Output is correct
11 Correct 405 ms 24404 KB Output is correct
12 Correct 283 ms 24476 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2392 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 4444 KB Output is correct
5 Correct 0 ms 2396 KB Output is correct
6 Correct 1 ms 4508 KB Output is correct
7 Correct 1 ms 4440 KB Output is correct
8 Correct 1 ms 4444 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 1 ms 4444 KB Output is correct
11 Correct 1 ms 6492 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 6492 KB Output is correct
14 Correct 1 ms 8540 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 2 ms 14792 KB Output is correct
17 Correct 2 ms 14684 KB Output is correct
18 Correct 2 ms 16988 KB Output is correct
19 Correct 2 ms 16988 KB Output is correct
20 Correct 1 ms 2396 KB Output is correct
21 Correct 2 ms 16988 KB Output is correct
22 Correct 2 ms 16988 KB Output is correct
23 Correct 0 ms 2396 KB Output is correct
24 Correct 1 ms 4444 KB Output is correct
25 Correct 2 ms 14940 KB Output is correct
26 Correct 2 ms 14940 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 53 ms 262632 KB Output is correct
29 Correct 29 ms 250712 KB Output is correct
30 Correct 36 ms 255808 KB Output is correct
31 Correct 88 ms 271540 KB Output is correct
32 Correct 1 ms 2396 KB Output is correct
33 Correct 30 ms 264588 KB Output is correct
34 Correct 30 ms 265044 KB Output is correct
35 Correct 31 ms 265420 KB Output is correct
36 Correct 55 ms 269568 KB Output is correct
37 Correct 27 ms 260692 KB Output is correct
38 Correct 28 ms 259072 KB Output is correct
39 Correct 43 ms 266900 KB Output is correct
40 Correct 50 ms 268112 KB Output is correct
41 Correct 1 ms 4444 KB Output is correct
42 Runtime error 41 ms 23096 KB Execution killed with signal 11
43 Halted 0 ms 0 KB -