QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#454519 | #6409. Classical Data Structure Problem | ASHWANTH_K | ML | 31ms | 25964kb | C++14 | 3.8kb | 2024-06-25 00:43:29 | 2024-06-25 00:43:29 |
Judging History
answer
// #pragma GCC optimize("Ofast")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")
// #pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ld> vld;
typedef vector<pair<ll , ll>> vpll;
typedef vector<pair<ld , ld>> vplld;
typedef pair<int,int> pii;
typedef vector<pair<int,int>> vpii;
typedef vector<ll> vl;
typedef pair<ll,ll> pll;
typedef priority_queue<ll> pq;
typedef priority_queue<pair<ll,ll>> pqp;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define print(a) for(auto x:a) cout<<x<<" ";cout<<endl;
#define printarr(a , n) for(int i = 0 ; i < n ;i ++) cout << a[i] << " "; cout << endl;
#define endl '\n'
#define sq(a) (a)*(a)
#define yes cout << "YES" << endl;
#define no cout << "NO" << endl;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<int, null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>
#define inf 1e18
int rand(int l, int r){
static mt19937
rng(chrono::steady_clock::now().time_since_epoch().count());
uniform_int_distribution<int> ludo(l, r);
return ludo(rng);
}
/*
order_of_key(x) -> number of elements strictly smaller than x
find_by_order(k) -> kth element
Good Life Good Wife
*/
struct node
{
ll l , r;
ll sum;
ll lazy;
struct node * lft , *rgt;
} *headnode;
struct node* newnode(ll left , ll right)
{
struct node *nn = new node();
nn -> l = left;
nn -> r = right;
nn -> sum = 0;
nn -> lazy = 0;
return nn;
}
void createchild(struct node *cur)
{
ll l = cur->l;
ll r = cur->r;
ll m = (l + r)/2;
cur -> lft = newnode(l , m);
cur -> rgt = newnode(m+1,r);
}
void propagate(struct node *cur)
{
ll sz = cur->r - cur->l + 1;
if(sz == 1)
{
cur->sum += sz*(cur->lazy);
cur->lazy = 0ll;
}
else
{
if(cur->lft == NULL || cur->rgt == NULL)
createchild(cur);
cur->lft->lazy += cur->lazy;
cur->rgt->lazy += cur->lazy;
cur->lft->lazy %= (1<<30);
cur->rgt->lazy %= (1<<30);
cur->sum += sz*(cur->lazy);
cur->lazy = 0ll;
}
cur->sum %= (1<<30);
}
void addlazy(ll a , ll b , ll v , struct node *cur)
{
propagate(cur);
if(cur->l >= a && cur->r <= b)
{
cur->lazy += v;
cur->lazy %= (1<<30);
return;
}
if(cur->l > b || cur->r < a)
{
return ;
}
if(cur->lft == NULL || cur->rgt == NULL)
createchild(cur);
addlazy(a , b , v, cur->lft);
addlazy(a , b , v, cur->rgt);
propagate(cur->lft);
propagate(cur->rgt);
cur->sum = cur->lft->sum + cur->rgt->sum;
cur->sum %= (1ll<<30);
}
ll getsum(ll a , ll b , struct node *cur)
{
propagate(cur);
if(cur->l >= a && cur->r <= b)
{
return cur->sum;
}
if(cur->l > b || cur->r < a)
{
return 0ll;
}
if(cur->lft == NULL || cur->rgt == NULL)
createchild(cur);
return (getsum(a , b , cur->lft) + getsum(a, b , cur->rgt))%(1<<30);
}
void solve()
{
ll n , m;
cin >> n >> m;
headnode = newnode(0 , (1ll << m)-1);
vl p(n+1);
vl q(n+1);
ll x = 0;
ll mod = (1ll << m);
for(int i = 1 ; i <= n ; i ++)
{
cin >> p[i] >> q[i];
ll a = p[i] + x , b = q[i] + x;
a %= mod;
b %= mod;
if(a > b) swap(a , b);
addlazy(a , b , i , headnode);
x += getsum(a , b , headnode);
// cout << a << " " << b << " = " << x << endl;
x %= (1ll<<30);
}
cout << x << endl;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r" , stdin);
freopen("output.txt", "w" , stdout);
#endif
int t=1;
for(int i = 1 ; i <= t ; i ++)
{
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3432kb
input:
5 2 2 1 1 3 3 2 1 0 0 2
output:
87
result:
ok 1 number(s): "87"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
1 1 1 1
output:
1
result:
ok 1 number(s): "1"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3756kb
input:
1 2 3 1
output:
3
result:
ok 1 number(s): "3"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3760kb
input:
1 5 31 15
output:
17
result:
ok 1 number(s): "17"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3500kb
input:
1 20 366738 218765
output:
147974
result:
ok 1 number(s): "147974"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3512kb
input:
1 30 86669484 41969116
output:
44700369
result:
ok 1 number(s): "44700369"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3516kb
input:
10 5 20 31 2 2 14 18 13 25 26 4 22 9 15 9 19 16 15 27 9 20
output:
1414
result:
ok 1 number(s): "1414"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
100 10 245 987 817 813 743 560 548 504 116 479 223 199 775 998 126 542 791 823 96 318 69 349 0 584 245 601 119 513 93 820 115 307 838 978 249 767 433 287 240 8 22 683 169 720 395 592 903 866 919 652 510 563 858 345 938 250 550 239 981 7 784 926 212 644 272 365 490 871 470 987 571 53 65 593 515 370 1...
output:
20383734
result:
ok 1 number(s): "20383734"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
1000 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1...
output:
190098735
result:
ok 1 number(s): "190098735"
Test #10:
score: 0
Accepted
time: 1ms
memory: 3504kb
input:
1000 5 8 18 31 28 19 3 15 28 5 22 19 1 26 27 17 17 5 26 6 27 10 6 5 2 3 19 6 6 28 16 17 16 0 21 7 31 13 25 13 10 28 30 0 13 21 5 2 9 25 28 4 18 31 13 1 26 30 3 5 8 19 16 22 10 15 17 3 25 6 27 18 26 27 1 26 29 18 21 14 20 5 1 26 9 7 13 19 25 15 11 24 17 12 28 24 17 4 27 20 27 31 18 25 17 1 28 5 0 16 ...
output:
794181769
result:
ok 1 number(s): "794181769"
Test #11:
score: 0
Accepted
time: 1ms
memory: 3904kb
input:
1000 10 732 399 190 578 491 867 330 55 113 400 34 734 790 927 201 156 107 359 790 398 401 523 634 505 570 305 281 513 551 35 610 33 231 330 833 756 213 444 412 315 139 165 533 21 35 977 319 884 894 72 149 667 16 538 282 860 850 550 100 99 801 138 159 34 468 852 840 853 368 994 469 906 393 298 464 89...
output:
755182648
result:
ok 1 number(s): "755182648"
Test #12:
score: 0
Accepted
time: 6ms
memory: 6996kb
input:
5000 15 7705 10737 21186 31441 10307 825 19372 1969 32358 6343 22487 31897 12802 25210 17920 4297 5726 8409 28174 12489 16532 12646 9916 14917 19592 26927 23987 9279 26951 31081 3673 10505 20727 10730 28961 26581 11005 29624 13931 32180 29764 19108 23553 28977 30178 6537 25586 3041 15333 31927 4671 ...
output:
374742544
result:
ok 1 number(s): "374742544"
Test #13:
score: 0
Accepted
time: 31ms
memory: 25964kb
input:
10000 20 914013 637387 162942 785196 55799 893293 359726 714014 109456 559963 689320 161360 164737 25370 260018 436870 801394 34900 564741 620583 1008448 956143 788249 695007 633673 1020122 431990 397822 253241 746513 322933 927863 843120 378180 343689 583409 788822 249760 839003 753443 910418 20908...
output:
719391110
result:
ok 1 number(s): "719391110"
Test #14:
score: -100
Memory Limit Exceeded
input:
100000 30 1063412225 224331901 116583527 514118426 121269548 678461017 856756753 250958443 1064104926 412721149 829078609 544244155 734000135 742933979 9127283 962205064 595091107 123655320 593251579 687018764 1052215261 661849950 297391487 243419322 105274358 526149321 1069300711 46673358 208918023...
output:
252791218