Submission #403882

# Submission time Handle Problem Language Result Execution time Memory
403882 2021-05-13T14:36:18 Z Fidisk Solar Storm (NOI20_solarstorm) C++14
28 / 100
439 ms 262148 KB
#include <bits/stdc++.h>
using namespace std;

#define oo 1e15
#define fi first
#define se second
#define sp(iiii) setprecision(iiii)
#define IO ios_base::sync_with_stdio(false); cin.tie(0)
#define ms(aaaa,xxxx) memset(aaaa,xxxx,sizeof(aaaa))
#define cntbit(xxxx) __builtin_popcount(xxxx)
#define getbit(xxxx,aaaa) ((xxxx>>(aaaa-1))&1)

typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<pair<int,int>,int> piii;
typedef pair<long long,long long> pll;
typedef pair<pair<long long,long long>,long long> plll;
typedef pair<pair<long long,long long>,pair<long long,long long>> pllll;
typedef pair<pair<long long,long long>,bool> pllb;

const ll base=361;
const ll mod=998244353;
const ld eps=1e-5;
const ll maxn=1e6;

ll n,s,k,i,res,pos,sum[21][1000009],pre[1000009],a[1000009],v[1000009],p[1000009],ans,j;
int g[21][1000009],r[1000009],l[1000009];

ll calc(int x,int y) {
    ll kq=0;
    for (ll ii=20;ii>=1;ii--) {
        if (getbit(y,ii)==1) {
            kq+=sum[ii][x];
            x=g[ii][x];
        }
    }
    return kq;
}

void Trace(ll x,ll y) {
    if (y==s) {
        cout<<s<<'\n';
        return;
    }
    if (x==n+1) {
        cout<<y<<'\n';
        return;
    }
    Trace(r[p[x]]+1,y+1);
    cout<<p[x]<<' ';
}

int main(){
    IO;
    cin>>n>>s>>k;
    for (i=1;i<n;i++) {
        cin>>a[i+1];
        a[i+1]+=a[i];
    }
    for (i=1;i<=n;i++) {
        cin>>v[i];
    }
    for (i=n;i>0;i--) {
        ans=i;
        for (j=ans-1;j>0;j/=2) {
            while (ans-j>0&&a[ans-j]>=a[i]-k) {
                ans-=j;
            }
        }
        l[i]=ans;
        p[l[i]]=max(p[l[i]],i);
    }
    for (i=1;i<=n;i++) {
        ans=i;
        for (j=n;j>0;j/=2) {
            while (ans+j<=n&&a[ans+j]<=a[i]+k) {
                ans+=j;
            }
        }
        r[i]=ans;
    }
    for (i=1;i<=n;i++) {
        p[i]=max(p[i-1],p[i]);
    }
    for (i=1;i<=n;i++) {
        pre[i]=pre[i-1]+v[i];
    }
    for (i=1;i<=n;i++) {
        g[1][i]=r[p[i]]+1;
    }
    g[1][n+1]=n+1;
    sum[1][n+1]=0;
    for (i=1;i<=n;i++) {
        sum[1][i]=pre[g[1][i]-1]-pre[i-1];
    }
    for (i=2;i<=20;i++) {
        for (j=1;j<=n+1;j++) {
            g[i][j]=g[i-1][g[i-1][j]];
            sum[i][j]=sum[i-1][j]+sum[i-1][g[i-1][j]];
        }
    }
    //cout<<k<<'\n';
    for (i=1;i<=n;i++) {
        ans=calc(i,s)-sum[1][i]+pre[r[p[i]]]-pre[l[p[i]]-1];
        if (ans>res) {
            //cout<<ans<<' '<<res<<' '<<i<<' '<<p[i]<<'\n';
            res=ans;
            pos=i;
        }
    }
    //cout<<res<<'\n';
    Trace(pos,0);
    return 0;
    for (i=1;i<=n;i++) {
        cout<<a[i]<<' ';
    }
    cout<<'\n';
    for (i=1;i<=n;i++) {
        cout<<p[i]<<' ';
    }
    cout<<'\n';
    for (i=1;i<=n;i++) {
        cout<<l[i]<<' ';
    }
    cout<<'\n';
    for (i=1;i<=n;i++) {
        cout<<r[i]<<' ';
    }
    cout<<'\n';
    for (i=1;i<=n;i++) {
        cout<<pre[i]<<' ';
    }
    cout<<'\n';
    for (i=1;i<=n;i++) {
        cout<<g[1][i]<<' ';
    }
    cout<<'\n';

}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 5 ms 3148 KB Output is correct
3 Correct 6 ms 3376 KB Output is correct
4 Correct 3 ms 1868 KB Output is correct
5 Correct 1 ms 588 KB Output is correct
6 Correct 5 ms 2764 KB Output is correct
7 Correct 5 ms 3020 KB Output is correct
8 Correct 6 ms 3404 KB Output is correct
9 Correct 6 ms 2380 KB Output is correct
10 Correct 5 ms 3276 KB Output is correct
11 Correct 6 ms 3404 KB Output is correct
12 Correct 3 ms 1740 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 403 ms 242984 KB Output is correct
2 Correct 261 ms 154640 KB Output is correct
3 Correct 274 ms 165676 KB Output is correct
4 Correct 287 ms 180820 KB Output is correct
5 Correct 339 ms 211948 KB Output is correct
6 Runtime error 399 ms 262148 KB Execution killed with signal 9
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 5 ms 3148 KB Output is correct
3 Correct 6 ms 3376 KB Output is correct
4 Correct 3 ms 1868 KB Output is correct
5 Correct 1 ms 588 KB Output is correct
6 Correct 5 ms 2764 KB Output is correct
7 Correct 5 ms 3020 KB Output is correct
8 Correct 6 ms 3404 KB Output is correct
9 Correct 6 ms 2380 KB Output is correct
10 Correct 5 ms 3276 KB Output is correct
11 Correct 6 ms 3404 KB Output is correct
12 Correct 3 ms 1740 KB Output is correct
13 Correct 403 ms 242984 KB Output is correct
14 Correct 261 ms 154640 KB Output is correct
15 Correct 274 ms 165676 KB Output is correct
16 Correct 287 ms 180820 KB Output is correct
17 Correct 339 ms 211948 KB Output is correct
18 Runtime error 399 ms 262148 KB Execution killed with signal 9
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 439 ms 259672 KB Output is correct
2 Correct 218 ms 144324 KB Output is correct
3 Correct 247 ms 154364 KB Output is correct
4 Correct 348 ms 223024 KB Output is correct
5 Correct 356 ms 216388 KB Output is correct
6 Correct 354 ms 229168 KB Output is correct
7 Runtime error 391 ms 262148 KB Execution killed with signal 9
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 5 ms 3148 KB Output is correct
3 Correct 6 ms 3376 KB Output is correct
4 Correct 3 ms 1868 KB Output is correct
5 Correct 1 ms 588 KB Output is correct
6 Correct 5 ms 2764 KB Output is correct
7 Correct 5 ms 3020 KB Output is correct
8 Correct 6 ms 3404 KB Output is correct
9 Correct 6 ms 2380 KB Output is correct
10 Correct 5 ms 3276 KB Output is correct
11 Correct 6 ms 3404 KB Output is correct
12 Correct 3 ms 1740 KB Output is correct
13 Correct 7 ms 3404 KB Output is correct
14 Correct 5 ms 2764 KB Output is correct
15 Correct 5 ms 2764 KB Output is correct
16 Correct 4 ms 2124 KB Output is correct
17 Correct 5 ms 2728 KB Output is correct
18 Correct 7 ms 3276 KB Output is correct
19 Correct 5 ms 2764 KB Output is correct
20 Correct 4 ms 2380 KB Output is correct
21 Correct 7 ms 3868 KB Output is correct
22 Correct 6 ms 3380 KB Output is correct
23 Correct 6 ms 3244 KB Output is correct
24 Correct 5 ms 3020 KB Output is correct
25 Correct 6 ms 3124 KB Output is correct
26 Correct 6 ms 3148 KB Output is correct
27 Correct 4 ms 2636 KB Output is correct
28 Correct 5 ms 2636 KB Output is correct
29 Correct 6 ms 2764 KB Output is correct
30 Correct 6 ms 3216 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 5 ms 3148 KB Output is correct
3 Correct 6 ms 3376 KB Output is correct
4 Correct 3 ms 1868 KB Output is correct
5 Correct 1 ms 588 KB Output is correct
6 Correct 5 ms 2764 KB Output is correct
7 Correct 5 ms 3020 KB Output is correct
8 Correct 6 ms 3404 KB Output is correct
9 Correct 6 ms 2380 KB Output is correct
10 Correct 5 ms 3276 KB Output is correct
11 Correct 6 ms 3404 KB Output is correct
12 Correct 3 ms 1740 KB Output is correct
13 Correct 403 ms 242984 KB Output is correct
14 Correct 261 ms 154640 KB Output is correct
15 Correct 274 ms 165676 KB Output is correct
16 Correct 287 ms 180820 KB Output is correct
17 Correct 339 ms 211948 KB Output is correct
18 Runtime error 399 ms 262148 KB Execution killed with signal 9
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 5 ms 3148 KB Output is correct
3 Correct 6 ms 3376 KB Output is correct
4 Correct 3 ms 1868 KB Output is correct
5 Correct 1 ms 588 KB Output is correct
6 Correct 5 ms 2764 KB Output is correct
7 Correct 5 ms 3020 KB Output is correct
8 Correct 6 ms 3404 KB Output is correct
9 Correct 6 ms 2380 KB Output is correct
10 Correct 5 ms 3276 KB Output is correct
11 Correct 6 ms 3404 KB Output is correct
12 Correct 3 ms 1740 KB Output is correct
13 Correct 403 ms 242984 KB Output is correct
14 Correct 261 ms 154640 KB Output is correct
15 Correct 274 ms 165676 KB Output is correct
16 Correct 287 ms 180820 KB Output is correct
17 Correct 339 ms 211948 KB Output is correct
18 Runtime error 399 ms 262148 KB Execution killed with signal 9
19 Halted 0 ms 0 KB -