Submission #467085

# Submission time Handle Problem Language Result Execution time Memory
467085 2021-08-21T16:54:19 Z JvThunder Distributing Candies (IOI21_candies) C++17
30 / 100
555 ms 30712 KB
#include <bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
 
const ll INF = (ll)(1e18);

struct segtree
{
    vector<ll> smx, smn, sum; 
    int N;
    segtree()
    {
        N = 1<<18;
        smx.assign(2*N,0);
        smn.assign(2*N,0);
        sum.assign(2*N,0);
    }

    void upd(int i, int s, int e, int t, ll v) 
    {
	    if(s==e) 
        {
            smx[i] = max(0LL, v);
            smn[i] = min(0LL, v);
            sum[i] = v;
            return;
        }
 
        int m=(s+e)/2;
        if(t<=m) upd(2*i, s, m, t, v);
        else upd(2*i+1, m+1, e, t, v);
        
        sum[i] = sum[2*i]+sum[2*i+1];
        smx[i] = max(smx[2*i],sum[2*i]+smx[2*i+1]);
        smn[i] = min(smn[2*i],sum[2*i]+smn[2*i+1]);
    }
 
    ll get(int i, int s, int e, ll c) 
    {
        if(s==e) return min(max(sum[i], 0LL), c);
    
        int m = (s+e)/2;
        if(smx[2*i+1]-smn[2*i+1]>c) return get(2*i+1, m+1, e, c);
    
        ll r = get(2*i,s,m,c);
        if(r+smx[2*i+1]>c) return c-(smx[2*i+1]-sum[2*i+1]);
        if(r+smn[2*i+1]<0) return sum[2*i+1]-smn[2*i+1];
        return r+sum[2*i+1];
    }

} st;
 
vector<int> distribute_candies(vector<int> c, vector<int> l, vector<int> r, vector<int> v) 
{
	int N=c.size(), Q=l.size();
	vector<int> final_A;
	vector<vector<int>> q(N+1);

	for (int i=0; i<Q; i++) q[l[i]].pb(i), q[r[i]+1].pb(-i);
	for (int i=0; i<N; i++) 
    {
		for (auto j:q[i]) 
        {
			if (j>=1) st.upd(1, 0, Q-1, j, v[j]);
			else st.upd(1, 0, Q-1, -j, 0);
		}
		final_A.pb(st.get(1, 0, Q-1, c[i]));
	}
	return final_A;
}
# Verdict Execution time Memory Grader output
1 Correct 7 ms 12620 KB Output is correct
2 Correct 7 ms 12592 KB Output is correct
3 Correct 8 ms 12620 KB Output is correct
4 Correct 10 ms 12620 KB Output is correct
5 Correct 9 ms 12748 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 435 ms 30712 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 12656 KB Output is correct
2 Correct 283 ms 19956 KB Output is correct
3 Correct 81 ms 20436 KB Output is correct
4 Correct 463 ms 30524 KB Output is correct
5 Correct 488 ms 30460 KB Output is correct
6 Correct 555 ms 30608 KB Output is correct
7 Correct 426 ms 30520 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 7 ms 12620 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 12620 KB Output is correct
2 Correct 7 ms 12592 KB Output is correct
3 Correct 8 ms 12620 KB Output is correct
4 Correct 10 ms 12620 KB Output is correct
5 Correct 9 ms 12748 KB Output is correct
6 Incorrect 435 ms 30712 KB Output isn't correct
7 Halted 0 ms 0 KB -