Submission #797203

#TimeUsernameProblemLanguageResultExecution timeMemory
797203vjudge1Food Court (JOI21_foodcourt)C++14
7 / 100
1089 ms524288 KiB
#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std ;
const int N = 25e4 ;
ll n, m, q ;
deque<pair<ll, ll>> d[N + 1] ;
signed main()
{
    ios_base::sync_with_stdio( 0 ) ;
    cin.tie( 0 ) ;
    cout.tie( 0 ) ;
    cin >> n >> m >> q ;
    while(q--)
    {
        ll type, l, r, c, k, a, b ;
        cin >> type ;
        if(type == 1)
        {
            cin >> l >> r >> c >> k ;
            for(ll i = l ; i <= r ; i++)
                d[i].push_back({c, k}) ;
        }
        if(type == 2)
        {
            cin >> l >> r >> k ;
            for(ll i = l ; i <= r ; i++)
            {
                ll sum = 0, k1 = k ;
                for(auto j : d[i])
                    sum += j.se ;
                if(sum < k1)
                {
                    d[i].clear() ;
                    continue ;
                }
                while(k1)
                    if(d[i][0].se <= k1)
                    {
                        k1 -= d[i][0].se ;
                        d[i].pop_front() ;
                    }
                    else
                    {
                        pair<ll, ll> p = {d[i][0].fi, d[i][0].se - k1} ;
                        d[i].pop_front() ;
                        d[i].push_front(p) ;
                        k1 = 0 ;
                    }
            }
        }
//        for(int i = 1 ; i <= n ; i++)
//        {
//            cout << i << '\n' ;
//            for(auto j : d[i])
//                cout << j.fi << ' ' << j.se << '\n' ;
//        }
//        cout << "__________________\n" ;
        if(type == 3)
        {
            ll sum = 0, ans = 0 ;
            cin >> a >> b ;
            for(auto i : d[a])
                sum += i.se ;
            if(sum < b)
            {
                cout << "0\n" ;
                continue ;
            }
            for(auto i : d[a])
                if(i.se < b)
                    b -= i.se ;
                else
                {
                    ans = i.fi ;
                    break ;
                }
            cout << ans << "\n" ;
        }
    }
    return 0 ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...