Submission #797276

# Submission time Handle Problem Language Result Execution time Memory
797276 2023-07-29T08:44:56 Z vjudge1 Food Court (JOI21_foodcourt) C++
7 / 100
237 ms 189252 KB
#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std ;
const int N = (1 << 18) ;
ll n, m, q, sum[2 * N + 1], psh[2 * N + 1] ;
deque<pair<ll, ll>> d[N + 1] ;
void push(ll l, ll r, ll v)
{
    if(!psh[v])
        return ;
    ll num = psh[v] ;
    psh[v] = 0 ;
    sum[v] += num * (r - l + 1) ;
    if(l == r)
        return ;
    psh[2 * v] += num ;
    psh[2 * v + 1] += num ;
}
void update(ll l, ll r, ll l1, ll r1, ll num, ll v)
{
    push(l, r, v) ;
    if(l > r1 || r < l1)
        return ;
    if(l1 <= l && r <= r1)
    {
        psh[v] = num ;
        push(l, r, v) ;
        return ;
    }
    ll mid = (l + r) >> 1 ;
    update(l, mid, l1, r1, num, v * 2) ;
    update(mid + 1, r, l1, r1, num, v * 2 + 1) ;
    sum[v] = sum[v * 2] + sum[v * 2 + 1] ;
}
ll get_sum(ll l, ll r, ll pos, ll v)
{
    if(l > pos || r < pos)
        return 0 ;
    if(l == r)
        return sum[v] ;
    ll mid = (l + r) >> 1 ;
    return get_sum(l, mid, pos, v * 2) + get_sum(mid + 1, r, pos, v * 2 + 1) ;
}
signed main()
{
    ios_base::sync_with_stdio( 0 ) ;
    cin.tie( 0 ) ;
    cout.tie( 0 ) ;
    cin >> n >> m >> q ;
    if(n <= 2000 && q <= 2000)
    {
        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 ;
                        }
                }
            }
            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 ;
    }
    if(n <= 65000 && q <= 65000)
    {
        bool flag1 = 0 ;
        ll type[q + 1], l[q + 1], r[q + 1], c[q + 1], k[q + 1], a[q + 1], b[q + 1] ;
        for(ll i = 1 ; i <= q ; i++)
        {
            cin >> type[i] ;
            if(type[i] == 1)
            {
                cin >> l[i] >> r[i] >> c[i] >> k[i] ;
                if(r[i] - l[i] > 10 || k[i] != 1)
                    flag1 = 1 ;
            }
            if(type[i] == 2)
                cin >> l[i] >> r[i] >> k[i] ;
            if(type[i] == 3)
                cin >> a[i] >> b[i] ;
        }
        if(!flag1)
        {
            for(ll i = 1 ; i <= q ; i++)
            {
                if(type[i] == 1)
                {
                    for(ll j = l[i] ; j <= r[i] ; j++)
                    {
                        ll num = get_sum(1, N, j, 1) ;
                        if(num >= d[j].size())
                            d[j].clear() ;
                        else
                        {
                            for(ll q = 1 ; q <= num ; q++)
                                d[j].pop_front() ;
                        }
                        update(1, N, j, j, 0, 1) ;
                        d[j].push_back({c[i], k[i]}) ;
                    }
                }
                if(type[i] == 2)
                    update(1, N, l[i], r[i], k[i], 1) ;
                if(type[i] == 3)
                {
                    ll num = get_sum(1, N, a[i], 1) ;
                    if(num >= d[a[i]].size())
                        d[a[i]].clear() ;
                    else
                    {
                        for(ll j = 1 ; j <= num ; j++)
                            d[a[i]].pop_front() ;
                    }
                    update(1, N, a[i], a[i], 0, 1) ;
                    if(b[i] <= d[a[i]].size())
                        cout << d[a[i]][b[i] - 1].fi << '\n' ;
                    else
                        cout << "0\n" ;
                }
            }
            return 0 ;
        }
    }
    if(m == 1)
    {
        while(m--)
        {
        }
        return 0 ;
    }
    return 0 ;
}

Compilation message

foodcourt.cpp: In function 'int main()':
foodcourt.cpp:143:32: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::deque<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  143 |                         if(num >= d[j].size())
      |                            ~~~~^~~~~~~~~~~~~~
foodcourt.cpp:159:28: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::deque<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  159 |                     if(num >= d[a[i]].size())
      |                        ~~~~^~~~~~~~~~~~~~~~~
foodcourt.cpp:167:29: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::deque<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  167 |                     if(b[i] <= d[a[i]].size())
      |                        ~~~~~^~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 97 ms 177148 KB Output is correct
2 Correct 106 ms 177520 KB Output is correct
3 Correct 127 ms 184168 KB Output is correct
4 Correct 168 ms 187648 KB Output is correct
5 Correct 92 ms 176684 KB Output is correct
6 Correct 91 ms 176716 KB Output is correct
7 Correct 235 ms 189252 KB Output is correct
8 Correct 181 ms 184884 KB Output is correct
9 Correct 117 ms 177600 KB Output is correct
10 Correct 184 ms 184404 KB Output is correct
11 Correct 152 ms 181448 KB Output is correct
12 Correct 116 ms 177716 KB Output is correct
13 Correct 116 ms 177712 KB Output is correct
14 Correct 129 ms 178852 KB Output is correct
15 Correct 133 ms 179756 KB Output is correct
16 Correct 122 ms 178732 KB Output is correct
17 Correct 105 ms 177128 KB Output is correct
18 Correct 115 ms 177348 KB Output is correct
19 Correct 85 ms 176684 KB Output is correct
20 Correct 85 ms 176672 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 97 ms 177148 KB Output is correct
2 Correct 106 ms 177520 KB Output is correct
3 Correct 127 ms 184168 KB Output is correct
4 Correct 168 ms 187648 KB Output is correct
5 Correct 92 ms 176684 KB Output is correct
6 Correct 91 ms 176716 KB Output is correct
7 Correct 235 ms 189252 KB Output is correct
8 Correct 181 ms 184884 KB Output is correct
9 Correct 117 ms 177600 KB Output is correct
10 Correct 184 ms 184404 KB Output is correct
11 Correct 152 ms 181448 KB Output is correct
12 Correct 116 ms 177716 KB Output is correct
13 Correct 116 ms 177712 KB Output is correct
14 Correct 129 ms 178852 KB Output is correct
15 Correct 133 ms 179756 KB Output is correct
16 Correct 122 ms 178732 KB Output is correct
17 Correct 105 ms 177128 KB Output is correct
18 Correct 115 ms 177348 KB Output is correct
19 Correct 85 ms 176684 KB Output is correct
20 Correct 85 ms 176672 KB Output is correct
21 Correct 112 ms 177464 KB Output is correct
22 Correct 115 ms 177640 KB Output is correct
23 Correct 144 ms 184044 KB Output is correct
24 Correct 162 ms 187860 KB Output is correct
25 Correct 101 ms 176780 KB Output is correct
26 Correct 84 ms 176704 KB Output is correct
27 Correct 237 ms 188736 KB Output is correct
28 Correct 221 ms 185680 KB Output is correct
29 Correct 128 ms 179408 KB Output is correct
30 Correct 188 ms 183916 KB Output is correct
31 Correct 151 ms 181372 KB Output is correct
32 Correct 122 ms 177504 KB Output is correct
33 Correct 109 ms 177664 KB Output is correct
34 Correct 149 ms 179816 KB Output is correct
35 Correct 124 ms 178352 KB Output is correct
36 Correct 135 ms 178696 KB Output is correct
37 Correct 82 ms 176720 KB Output is correct
38 Correct 83 ms 176780 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 179 ms 182492 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 82 ms 176708 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 97 ms 177148 KB Output is correct
2 Correct 106 ms 177520 KB Output is correct
3 Correct 127 ms 184168 KB Output is correct
4 Correct 168 ms 187648 KB Output is correct
5 Correct 92 ms 176684 KB Output is correct
6 Correct 91 ms 176716 KB Output is correct
7 Correct 235 ms 189252 KB Output is correct
8 Correct 181 ms 184884 KB Output is correct
9 Correct 117 ms 177600 KB Output is correct
10 Correct 184 ms 184404 KB Output is correct
11 Correct 152 ms 181448 KB Output is correct
12 Correct 116 ms 177716 KB Output is correct
13 Correct 116 ms 177712 KB Output is correct
14 Correct 129 ms 178852 KB Output is correct
15 Correct 133 ms 179756 KB Output is correct
16 Correct 122 ms 178732 KB Output is correct
17 Correct 105 ms 177128 KB Output is correct
18 Correct 115 ms 177348 KB Output is correct
19 Correct 85 ms 176684 KB Output is correct
20 Correct 85 ms 176672 KB Output is correct
21 Incorrect 179 ms 182492 KB Output isn't correct
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 96 ms 179876 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 97 ms 177148 KB Output is correct
2 Correct 106 ms 177520 KB Output is correct
3 Correct 127 ms 184168 KB Output is correct
4 Correct 168 ms 187648 KB Output is correct
5 Correct 92 ms 176684 KB Output is correct
6 Correct 91 ms 176716 KB Output is correct
7 Correct 235 ms 189252 KB Output is correct
8 Correct 181 ms 184884 KB Output is correct
9 Correct 117 ms 177600 KB Output is correct
10 Correct 184 ms 184404 KB Output is correct
11 Correct 152 ms 181448 KB Output is correct
12 Correct 116 ms 177716 KB Output is correct
13 Correct 116 ms 177712 KB Output is correct
14 Correct 129 ms 178852 KB Output is correct
15 Correct 133 ms 179756 KB Output is correct
16 Correct 122 ms 178732 KB Output is correct
17 Correct 105 ms 177128 KB Output is correct
18 Correct 115 ms 177348 KB Output is correct
19 Correct 85 ms 176684 KB Output is correct
20 Correct 85 ms 176672 KB Output is correct
21 Correct 112 ms 177464 KB Output is correct
22 Correct 115 ms 177640 KB Output is correct
23 Correct 144 ms 184044 KB Output is correct
24 Correct 162 ms 187860 KB Output is correct
25 Correct 101 ms 176780 KB Output is correct
26 Correct 84 ms 176704 KB Output is correct
27 Correct 237 ms 188736 KB Output is correct
28 Correct 221 ms 185680 KB Output is correct
29 Correct 128 ms 179408 KB Output is correct
30 Correct 188 ms 183916 KB Output is correct
31 Correct 151 ms 181372 KB Output is correct
32 Correct 122 ms 177504 KB Output is correct
33 Correct 109 ms 177664 KB Output is correct
34 Correct 149 ms 179816 KB Output is correct
35 Correct 124 ms 178352 KB Output is correct
36 Correct 135 ms 178696 KB Output is correct
37 Correct 82 ms 176720 KB Output is correct
38 Correct 83 ms 176780 KB Output is correct
39 Incorrect 179 ms 182492 KB Output isn't correct
40 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 97 ms 177148 KB Output is correct
2 Correct 106 ms 177520 KB Output is correct
3 Correct 127 ms 184168 KB Output is correct
4 Correct 168 ms 187648 KB Output is correct
5 Correct 92 ms 176684 KB Output is correct
6 Correct 91 ms 176716 KB Output is correct
7 Correct 235 ms 189252 KB Output is correct
8 Correct 181 ms 184884 KB Output is correct
9 Correct 117 ms 177600 KB Output is correct
10 Correct 184 ms 184404 KB Output is correct
11 Correct 152 ms 181448 KB Output is correct
12 Correct 116 ms 177716 KB Output is correct
13 Correct 116 ms 177712 KB Output is correct
14 Correct 129 ms 178852 KB Output is correct
15 Correct 133 ms 179756 KB Output is correct
16 Correct 122 ms 178732 KB Output is correct
17 Correct 105 ms 177128 KB Output is correct
18 Correct 115 ms 177348 KB Output is correct
19 Correct 85 ms 176684 KB Output is correct
20 Correct 85 ms 176672 KB Output is correct
21 Correct 112 ms 177464 KB Output is correct
22 Correct 115 ms 177640 KB Output is correct
23 Correct 144 ms 184044 KB Output is correct
24 Correct 162 ms 187860 KB Output is correct
25 Correct 101 ms 176780 KB Output is correct
26 Correct 84 ms 176704 KB Output is correct
27 Correct 237 ms 188736 KB Output is correct
28 Correct 221 ms 185680 KB Output is correct
29 Correct 128 ms 179408 KB Output is correct
30 Correct 188 ms 183916 KB Output is correct
31 Correct 151 ms 181372 KB Output is correct
32 Correct 122 ms 177504 KB Output is correct
33 Correct 109 ms 177664 KB Output is correct
34 Correct 149 ms 179816 KB Output is correct
35 Correct 124 ms 178352 KB Output is correct
36 Correct 135 ms 178696 KB Output is correct
37 Correct 82 ms 176720 KB Output is correct
38 Correct 83 ms 176780 KB Output is correct
39 Incorrect 179 ms 182492 KB Output isn't correct
40 Halted 0 ms 0 KB -