Submission #62815378
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll t[400000];
void update(int v, int tl, int tr, int pos, int new_val) {
if (tl == tr) {
t[v] = new_val;
} else {
int tm = (tl + tr) / 2;
if (pos <= tm)
update(v*2, tl, tm, pos, new_val);
else
update(v*2+1, tm+1, tr, pos, new_val);
t[v] = max(t[v*2], t[v*2+1]);
}
}
int query(int v, int tl, int tr, int l, int r) {
if (l > r)
return 0;
if (l == tl && r == tr) {
return t[v];
}
int tm = (tl + tr) / 2;
return max(query(v*2, tl, tm, l, min(r, tm)),
query(v*2+1, tm+1, tr, max(l, tm+1), r));
}
void solve() {
ll n, q;
cin >> n >> q;
map<ll, vector<ll>> mp;
vector<ll> v(n + 1);
for (int i = 1; i <= n; i++) {
cin >> v[i];
mp[v[i]].push_back(i);
}
vector<pair<ll, ll> > queries;
map<ll, vector<ll> > mpq;
set<ll> st;
for(int i=1;i<=q;i++) {
ll r, x;
cin>>r>>x;
queries.push_back({r, x});
mpq[x].push_back(r);
st.insert(x);
}
map<pair<ll, ll>, ll> dp;
for(auto it:mp) {
ll x = it.first;
map<ll, ll> temp;
// cout<<"x = "<<x<<endl;
for(auto bt:it.second) {
ll pos = bt;
// cout<<pos<<" ";
ll val = query(1, 1, n, 1, pos-1);
temp[pos] = val + 1;
}
while(st.size() and *st.begin() < x) {
ll y = *st.begin();
st.erase(st.begin());
ll ans = 0;
for(auto r:mpq[y]) {
ans = query(1, 1, n, 1, r);
dp[{r, y}] = ans;
}
}
// cout<<endl;
for(auto bt:it.second) {
ll pos = bt;
update(1, 1, n, pos, temp[pos]);
}
while(st.size() and *st.begin() <= x) {
ll y = *st.begin();
st.erase(st.begin());
ll ans = 0;
for(auto r:mpq[y]) {
ans = query(1, 1, n, 1, r);
dp[{r, y}] = ans;
}
}
// for(int i=1;i<=n;i++) {
// cout<<query(1, 1, n, i, i)<<" ";
// }
// cout << endl;
}
while(st.size()) {
ll y = *st.begin();
st.erase(st.begin());
ll ans = 0;
for(auto r:mpq[y]) {
ans = query(1, 1, n, 1, r);
dp[{r, y}] = ans;
}
}
// cout<<query(1, 1, n, 1, n)<<'\n';
for(auto it : queries) {
ll l = it.first;
ll r = it.second;
// cout<<l<<" "<<r<<" ";
cout << dp[{l, r}] << "\n";
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t=1;
// cin>>t;
for(int i=1;i<=t;i++) {
// cout<<"Case #"<<i<<": ";
solve();
}
return 0;
}
Submission Info
| Submission Time |
|
| Task |
F - Prefix LIS Query |
| User |
tanvirtareq |
| Language |
C++ 17 (gcc 12.2) |
| Score |
0 |
| Code Size |
2998 Byte |
| Status |
RE |
| Exec Time |
415 ms |
| Memory |
63128 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
0 / 500 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 02_random2_04.txt, 03_random3_00.txt, 03_random3_01.txt, 03_random3_02.txt, 03_random3_03.txt, 03_random3_04.txt, 03_random3_05.txt, 03_random3_06.txt, 03_random3_07.txt, 03_random3_08.txt, 03_random3_09.txt, 04_handmade_00.txt, 04_handmade_01.txt, 04_handmade_02.txt, 04_handmade_03.txt, 04_handmade_04.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3488 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3452 KiB |
| 01_random_00.txt |
AC |
1 ms |
3492 KiB |
| 01_random_01.txt |
AC |
376 ms |
50116 KiB |
| 01_random_02.txt |
RE |
180 ms |
26700 KiB |
| 01_random_03.txt |
RE |
138 ms |
22408 KiB |
| 01_random_04.txt |
AC |
273 ms |
37160 KiB |
| 01_random_05.txt |
AC |
363 ms |
43460 KiB |
| 01_random_06.txt |
RE |
374 ms |
61024 KiB |
| 01_random_07.txt |
RE |
371 ms |
61060 KiB |
| 01_random_08.txt |
RE |
376 ms |
61132 KiB |
| 01_random_09.txt |
RE |
369 ms |
61028 KiB |
| 01_random_10.txt |
RE |
378 ms |
61092 KiB |
| 01_random_11.txt |
RE |
368 ms |
61036 KiB |
| 01_random_12.txt |
RE |
379 ms |
61116 KiB |
| 01_random_13.txt |
RE |
384 ms |
61112 KiB |
| 01_random_14.txt |
RE |
397 ms |
61120 KiB |
| 02_random2_00.txt |
RE |
415 ms |
61100 KiB |
| 02_random2_01.txt |
RE |
379 ms |
61076 KiB |
| 02_random2_02.txt |
RE |
392 ms |
61028 KiB |
| 02_random2_03.txt |
RE |
361 ms |
60992 KiB |
| 02_random2_04.txt |
RE |
348 ms |
61008 KiB |
| 03_random3_00.txt |
RE |
327 ms |
61160 KiB |
| 03_random3_01.txt |
RE |
313 ms |
61032 KiB |
| 03_random3_02.txt |
RE |
305 ms |
61148 KiB |
| 03_random3_03.txt |
RE |
310 ms |
61220 KiB |
| 03_random3_04.txt |
RE |
293 ms |
61040 KiB |
| 03_random3_05.txt |
RE |
343 ms |
61064 KiB |
| 03_random3_06.txt |
RE |
329 ms |
61048 KiB |
| 03_random3_07.txt |
RE |
347 ms |
61156 KiB |
| 03_random3_08.txt |
RE |
335 ms |
61064 KiB |
| 03_random3_09.txt |
RE |
360 ms |
61220 KiB |
| 04_handmade_00.txt |
RE |
144 ms |
19492 KiB |
| 04_handmade_01.txt |
RE |
343 ms |
54176 KiB |
| 04_handmade_02.txt |
RE |
147 ms |
33552 KiB |
| 04_handmade_03.txt |
RE |
146 ms |
33424 KiB |
| 04_handmade_04.txt |
RE |
352 ms |
63128 KiB |