Submission #682385

# Submission time Handle Problem Language Result Execution time Memory
682385 2023-01-16T07:42:14 Z vjudge1 Food Court (JOI21_foodcourt) C++17
7 / 100
1000 ms 57036 KB
#include <bits/stdc++.h>
using namespace std;
#include <ext/rope>
using namespace __gnu_cxx;

// #pragma comment(linker, "/stack:2000000000")
// #pragma GCC optimize("Ofast")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")


typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pll;

#define precise(a) cout<<fixed<<setprecision(a)
#define sz size()
#define ff first
#define ss second
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(), a.rend()
#define pb push_back
// t1
const ll mod = ll(1e9)+7; //(b + (a%b)) % b (to mod -1%(10^9+7) correctly in c++ its -1 but its suppose to be 10^9+6
const ll MOD = 998244353;  // (a%mod)*(binpow(b,mod-2,mod) = (a/b)%mod
const ll N = ll(3e5)+10;
const ll K = 17;
const ll inf = 1e18;
const ld eps = 1e-15L;
//const ll B = 316;
ll lcm(ll a, ll b){ return (a / __gcd(a,b)) * b; }
//const ld P = acos(-1.0);

// ll binpow(ll a, ll b, ll m){ ll res=1;a%=m; while(b>0){ if(b&1)res=(res*a)%m; a=(a*a)%m; b/=2; } return res%m;}
ld binpow(ld a, ll b){ ld res=1; while(b>0){ if(b&1)res=(res*a); a=(a*a); b/=2; } return res;}


void Freopen(string Key){ freopen((Key+".in").c_str(), "r", stdin); freopen((Key+".out").c_str(), "w", stdout); }



ll n, m, q; 
pll t[N*4];
ll u[N*4];
vector<pll>cus[N];
ll debt[N];

void precalc() {
	for(ll i=0; i<N*4; i++) t[i].ss = inf;
}

void update(ll v, ll tl, ll tr, ll l, ll r, ll x) {
	t[v].ff+=(tr-tl+1)*u[v];
	t[v].ss+=u[v];
	u[v+v]+=u[v];
	u[v+v+1]+=u[v];
	u[v] = 0;
    if(tl>r || l>tr) return;
    ll tm = (tl+tr)/2;
    if(l<=tl && tr<=r) {
    	if(tl==tr) {
    		t[v].ff = max(0ll, t[v].ff+u[v]);
    		t[v].ss = t[v].ff;
    	}
    	else {
    		if(t[v].ss<x) {
    			update(v+v, tl, tm, l, r, x);
    			update(v+v+1, tm+1, tr, l, r, x);
    		}
    		else {
    			u[v]+=x;
    			t[v].ss+=u[v];
    			t[v].ff+=(tr-tl+1)*u[v];
    			u[v+v]+=u[v];
    			u[v+v+1]+=u[v];
    			u[v] = 0;
    		}
    	}
        return;
    }
    tm = (tl+tr)/2;
    update(v+v, tl, tm, l, r, x);
    update(v+v+1, tm+1, tr, l, r, x);
    t[v].ff = t[v+v].ff + t[v+v+1].ff;
    t[v].ss = min(t[v+v].ss, t[v+v+1].ss);
}

ll get(ll v, ll tl, ll tr, ll l, ll r) {
	t[v].ff+=(tr-tl+1)*u[v];
	t[v].ss+=u[v];
	u[v+v]+=u[v];
	u[v+v+1]+=u[v];
	u[v] = 0;
    if(tl>r || l>tr) return 0;
    if(l<=tl && tr<=r) return t[v].ff;
    ll tm = (tl+tr)/2;
    return get(v+v, tl, tm, l, r) + get(v+v+1, tm+1, tr, l, r);
}



void Baizho()
{   
    cin>>n>>m>>q;
    if(m==1) {
        while(q--) {
            ll t; cin>>t;
            if(t==1) {
                ll l, r, shop, k; cin>>l>>r>>shop>>k;
                update(1, 1, n, l, r, k);
            }
            else if(t==2) {
                ll l, r, k; cin>>l>>r>>k;
                update(1, 1, n, l, r, -k);
            }
            else {
                ll shop, pos; cin>>shop>>pos;
                ll cnt = get(1, 1, n, shop, shop);
                if(cnt<pos) cout<<"0\n";
                else cout<<"1\n";

            }
        }
        return;
    }
    if(n>3000) assert(0);
    while(q--) {
        ll t; cin>>t;
        if(t==1) {
            ll l, r, shop, k; cin>>l>>r>>shop>>k;
            for(ll i=l; i<=r; i++) {
                ll extra = 0;
                if(cus[i].sz) {
                    extra = cus[i].back().ff;
                    if(cus[i].back().ss==shop) {
                        cus[i].pop_back();
                    }
                }  
                cus[i].pb({k+extra, shop});
            }
        }
        else if(t==2) {
            ll l, r, k; cin>>l>>r>>k;
            for(ll i=l; i<=r; i++) {
                if(cus[i].sz) debt[i]+=min(cus[i].back().ff-debt[i], k);
            }
        }
        else {
            ll shop, pos; cin>>shop>>pos;
            pos+=debt[shop];
            if(cus[shop].sz==0) cout<<"0\n";
            else if(pos>cus[shop].back().ff) cout<<"0\n";
            else cout<<(*lower_bound(all(cus[shop]), make_pair(pos, 0ll))).ss<<"\n";
        }
    }
}

    
int main() {

    // Freopen("div7");
    ios_base::sync_with_stdio(false);   
    cin.tie(0);cout.tie(0); 

    precalc();

    int ttt = 1;
    // cin>>ttt;

    for(int i=1; i<=ttt; i++) { Baizho();}
}

Compilation message

foodcourt.cpp: In function 'void Freopen(std::string)':
foodcourt.cpp:37:34: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 | void Freopen(string Key){ freopen((Key+".in").c_str(), "r", stdin); freopen((Key+".out").c_str(), "w", stdout); }
      |                           ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foodcourt.cpp:37:76: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 | void Freopen(string Key){ freopen((Key+".in").c_str(), "r", stdin); freopen((Key+".out").c_str(), "w", stdout); }
      |                                                                     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 19 ms 31868 KB Output is correct
2 Correct 31 ms 37564 KB Output is correct
3 Correct 33 ms 39464 KB Output is correct
4 Correct 40 ms 50104 KB Output is correct
5 Correct 13 ms 26196 KB Output is correct
6 Correct 15 ms 26172 KB Output is correct
7 Correct 33 ms 43632 KB Output is correct
8 Correct 33 ms 42988 KB Output is correct
9 Correct 34 ms 43036 KB Output is correct
10 Correct 34 ms 44060 KB Output is correct
11 Correct 34 ms 44628 KB Output is correct
12 Correct 34 ms 43612 KB Output is correct
13 Correct 44 ms 52000 KB Output is correct
14 Correct 55 ms 57036 KB Output is correct
15 Correct 34 ms 41676 KB Output is correct
16 Correct 49 ms 56780 KB Output is correct
17 Correct 21 ms 35156 KB Output is correct
18 Correct 28 ms 39940 KB Output is correct
19 Correct 13 ms 26400 KB Output is correct
20 Correct 14 ms 26452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 19 ms 31868 KB Output is correct
2 Correct 31 ms 37564 KB Output is correct
3 Correct 33 ms 39464 KB Output is correct
4 Correct 40 ms 50104 KB Output is correct
5 Correct 13 ms 26196 KB Output is correct
6 Correct 15 ms 26172 KB Output is correct
7 Correct 33 ms 43632 KB Output is correct
8 Correct 33 ms 42988 KB Output is correct
9 Correct 34 ms 43036 KB Output is correct
10 Correct 34 ms 44060 KB Output is correct
11 Correct 34 ms 44628 KB Output is correct
12 Correct 34 ms 43612 KB Output is correct
13 Correct 44 ms 52000 KB Output is correct
14 Correct 55 ms 57036 KB Output is correct
15 Correct 34 ms 41676 KB Output is correct
16 Correct 49 ms 56780 KB Output is correct
17 Correct 21 ms 35156 KB Output is correct
18 Correct 28 ms 39940 KB Output is correct
19 Correct 13 ms 26400 KB Output is correct
20 Correct 14 ms 26452 KB Output is correct
21 Correct 23 ms 36460 KB Output is correct
22 Correct 33 ms 37636 KB Output is correct
23 Correct 28 ms 41708 KB Output is correct
24 Correct 40 ms 50116 KB Output is correct
25 Correct 14 ms 26196 KB Output is correct
26 Correct 13 ms 26200 KB Output is correct
27 Correct 31 ms 40964 KB Output is correct
28 Correct 34 ms 43964 KB Output is correct
29 Correct 32 ms 43932 KB Output is correct
30 Correct 35 ms 43476 KB Output is correct
31 Correct 31 ms 40532 KB Output is correct
32 Correct 31 ms 40268 KB Output is correct
33 Correct 42 ms 50336 KB Output is correct
34 Correct 63 ms 56944 KB Output is correct
35 Correct 37 ms 48848 KB Output is correct
36 Correct 50 ms 56548 KB Output is correct
37 Correct 13 ms 26324 KB Output is correct
38 Correct 13 ms 26464 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 34 ms 52812 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1093 ms 34456 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 19 ms 31868 KB Output is correct
2 Correct 31 ms 37564 KB Output is correct
3 Correct 33 ms 39464 KB Output is correct
4 Correct 40 ms 50104 KB Output is correct
5 Correct 13 ms 26196 KB Output is correct
6 Correct 15 ms 26172 KB Output is correct
7 Correct 33 ms 43632 KB Output is correct
8 Correct 33 ms 42988 KB Output is correct
9 Correct 34 ms 43036 KB Output is correct
10 Correct 34 ms 44060 KB Output is correct
11 Correct 34 ms 44628 KB Output is correct
12 Correct 34 ms 43612 KB Output is correct
13 Correct 44 ms 52000 KB Output is correct
14 Correct 55 ms 57036 KB Output is correct
15 Correct 34 ms 41676 KB Output is correct
16 Correct 49 ms 56780 KB Output is correct
17 Correct 21 ms 35156 KB Output is correct
18 Correct 28 ms 39940 KB Output is correct
19 Correct 13 ms 26400 KB Output is correct
20 Correct 14 ms 26452 KB Output is correct
21 Runtime error 34 ms 52812 KB Execution killed with signal 6
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 40 ms 52844 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 19 ms 31868 KB Output is correct
2 Correct 31 ms 37564 KB Output is correct
3 Correct 33 ms 39464 KB Output is correct
4 Correct 40 ms 50104 KB Output is correct
5 Correct 13 ms 26196 KB Output is correct
6 Correct 15 ms 26172 KB Output is correct
7 Correct 33 ms 43632 KB Output is correct
8 Correct 33 ms 42988 KB Output is correct
9 Correct 34 ms 43036 KB Output is correct
10 Correct 34 ms 44060 KB Output is correct
11 Correct 34 ms 44628 KB Output is correct
12 Correct 34 ms 43612 KB Output is correct
13 Correct 44 ms 52000 KB Output is correct
14 Correct 55 ms 57036 KB Output is correct
15 Correct 34 ms 41676 KB Output is correct
16 Correct 49 ms 56780 KB Output is correct
17 Correct 21 ms 35156 KB Output is correct
18 Correct 28 ms 39940 KB Output is correct
19 Correct 13 ms 26400 KB Output is correct
20 Correct 14 ms 26452 KB Output is correct
21 Correct 23 ms 36460 KB Output is correct
22 Correct 33 ms 37636 KB Output is correct
23 Correct 28 ms 41708 KB Output is correct
24 Correct 40 ms 50116 KB Output is correct
25 Correct 14 ms 26196 KB Output is correct
26 Correct 13 ms 26200 KB Output is correct
27 Correct 31 ms 40964 KB Output is correct
28 Correct 34 ms 43964 KB Output is correct
29 Correct 32 ms 43932 KB Output is correct
30 Correct 35 ms 43476 KB Output is correct
31 Correct 31 ms 40532 KB Output is correct
32 Correct 31 ms 40268 KB Output is correct
33 Correct 42 ms 50336 KB Output is correct
34 Correct 63 ms 56944 KB Output is correct
35 Correct 37 ms 48848 KB Output is correct
36 Correct 50 ms 56548 KB Output is correct
37 Correct 13 ms 26324 KB Output is correct
38 Correct 13 ms 26464 KB Output is correct
39 Runtime error 34 ms 52812 KB Execution killed with signal 6
40 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 19 ms 31868 KB Output is correct
2 Correct 31 ms 37564 KB Output is correct
3 Correct 33 ms 39464 KB Output is correct
4 Correct 40 ms 50104 KB Output is correct
5 Correct 13 ms 26196 KB Output is correct
6 Correct 15 ms 26172 KB Output is correct
7 Correct 33 ms 43632 KB Output is correct
8 Correct 33 ms 42988 KB Output is correct
9 Correct 34 ms 43036 KB Output is correct
10 Correct 34 ms 44060 KB Output is correct
11 Correct 34 ms 44628 KB Output is correct
12 Correct 34 ms 43612 KB Output is correct
13 Correct 44 ms 52000 KB Output is correct
14 Correct 55 ms 57036 KB Output is correct
15 Correct 34 ms 41676 KB Output is correct
16 Correct 49 ms 56780 KB Output is correct
17 Correct 21 ms 35156 KB Output is correct
18 Correct 28 ms 39940 KB Output is correct
19 Correct 13 ms 26400 KB Output is correct
20 Correct 14 ms 26452 KB Output is correct
21 Correct 23 ms 36460 KB Output is correct
22 Correct 33 ms 37636 KB Output is correct
23 Correct 28 ms 41708 KB Output is correct
24 Correct 40 ms 50116 KB Output is correct
25 Correct 14 ms 26196 KB Output is correct
26 Correct 13 ms 26200 KB Output is correct
27 Correct 31 ms 40964 KB Output is correct
28 Correct 34 ms 43964 KB Output is correct
29 Correct 32 ms 43932 KB Output is correct
30 Correct 35 ms 43476 KB Output is correct
31 Correct 31 ms 40532 KB Output is correct
32 Correct 31 ms 40268 KB Output is correct
33 Correct 42 ms 50336 KB Output is correct
34 Correct 63 ms 56944 KB Output is correct
35 Correct 37 ms 48848 KB Output is correct
36 Correct 50 ms 56548 KB Output is correct
37 Correct 13 ms 26324 KB Output is correct
38 Correct 13 ms 26464 KB Output is correct
39 Runtime error 34 ms 52812 KB Execution killed with signal 6
40 Halted 0 ms 0 KB -