返回信息:SIGFPE。代码两份(均P1533能正常运行但这题RE):
//# pragma GCC optimize("Ofast,no-stack-protector")
//
//# pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
# include <bits/stdc++.h>
# define I return
# define AK 0
# define IOI ;
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
struct node {
int l, r, k, id, pie;
bool operator < (const node& x) const {
return pie != x.pie ? pie < x.pie : pie & 1 ? r > x.r : r < x.r;
}
} q[5005];
int n, m, len, a[100005], ans[5005], l = 1, r;
vector <int> v;
void insert (const int x) {
// cerr << "add " << x << '\n';
v.insert (lower_bound (v.begin (), v.end (), a[x]), a[x]);
return ;
}
void del (const int x) {
// cerr << "del " << x << '\n';
auto it = find (v.begin (), v.end (), a[x]);
if (it != v.end ())
v.erase (it);
return ;
}
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n >> m;
for (int i = 1; i <= n; ++ i)
cin >> a[i];
len = n / sqrt (m);
for (int i = 0; i < m; ++ i)
cin >> q[i].l >> q[i].r >> q[i].k, -- q[i].k, q[i].id = i, q[i].pie = q[i].l / len;
sort (q, q + m);
// cerr << "Pretest Passed\n";
for (int i = 0; i < m; ++ i) {
// cerr << q[i].id << ":\nl-\n";
while (l > q[i].l)
insert (-- l);
// cerr << "r+\n";
while (r < q[i].r)
insert (++ r);
// cerr << "l+\n";
while (l < q[i].l)
del (l), ++ l;
// cerr << "r-\n";
while (r > q[i].r)
del (r), -- r;
// cerr << q[i].id << ':' << v.size () << '\n';
ans[q[i].id] = v[q[i].k];
}
for (int i = 0; i < m; ++ i)
cout << ans[i] << '\n';
I AK IOI
}
//# pragma GCC optimize("Ofast,no-stack-protector")
//
//# pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
# include <bits/stdc++.h>
# include <ext/pb_ds/assoc_container.hpp>
# define I return
# define AK 0
# define IOI ;
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef pair <int, int> pii;
struct node {
int l, r, k, id, pie;
bool operator < (const node& x) const {
return pie != x.pie ? pie < x.pie : pie & 1 ? r > x.r : r < x.r;
}
} q[50005];
int n, m, len, a[300005], ans[50005], l = 1, r;
tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> v;
void insert (const int x) {
// cerr << "add " << x << '\n';
v.insert (a[x]);
return ;
}
void del (const int x) {
// cerr << "del " << x << '\n';
v.erase (a[x]);
return ;
}
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> n >> m;
for (int i = 1; i <= n; ++ i)
cin >> a[i];
len = n / sqrt (m);
for (int i = 0; i < m; ++ i)
cin >> q[i].l >> q[i].r >> q[i].k, -- q[i].k, q[i].id = i, q[i].pie = q[i].l / len;
sort (q, q + m);
// cerr << "Pretest Passed\n";
for (int i = 0; i < m; ++ i) {
// cerr << q[i].id << ":\nl-\n";
while (l > q[i].l)
insert (-- l);
// cerr << "r+\n";
while (r < q[i].r)
insert (++ r);
// cerr << "l+\n";
while (l < q[i].l)
del (l), ++ l;
// cerr << "r-\n";
while (r > q[i].r)
del (r), -- r;
// cerr << q[i].id << ':' << v.size () << '\n';
ans[q[i].id] = *v.find_by_order (q[i].k);
}
for (int i = 0; i < m; ++ i)
cout << ans[i] << '\n';
I AK IOI
}