# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
653087 |
2022-10-25T15:58:37 Z |
Vladth11 |
Fish (IOI08_fish) |
C++14 |
|
742 ms |
48640 KB |
#include <iostream>
#include <vector>
#include <set>
#include <unordered_set>
#include <algorithm>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
using namespace std;
typedef long long ll;
typedef pair <ll, ll> pii;
const ll bSize = 11;
const ll bits = 17;
const ll NMAX = 500001;
ll MOD;
class All {
public:
ll all[NMAX * 4];
void init() {
for(ll i = 0; i < NMAX * 4; i++)
all[i] = 1;
}
void add(ll node, ll st, ll dr, ll l, ll x) {
if(st == dr) {
all[node] += x;
all[node] = max(all[node], 1LL);
return;
}
ll mid = (st + dr) / 2;
if(l <= mid) {
add(node * 2, st, mid, l, x);
} else {
add(node * 2 + 1, mid + 1, dr, l, x);
}
all[node] = all[node * 2] * all[node * 2 + 1];
all[node] %= MOD;
}
void update(ll node, ll st, ll dr, ll l, ll x) {
if(st == dr) {
all[node] = x;
all[node] = max(all[node], 1LL);
return;
}
ll mid = (st + dr) / 2;
if(l <= mid) {
update(node * 2, st, mid, l, x);
} else {
update(node * 2 + 1, mid + 1, dr, l, x);
}
all[node] = all[node * 2] * all[node * 2 + 1];
all[node] %= MOD;
}
} all, banned;
ll imp[NMAX];
ll col[NMAX];
ll maxi[NMAX];
pii v[NMAX];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll n, k, i;
cin >> n >> k >> MOD;
for(i = 1; i <= n; i++) {
cin >> v[i].first >> v[i].second;
}
sort(v + 1, v + n + 1);
for(i = n; i >= 1; i--) {
if(!col[v[i].second]) {
imp[i] = 1;
}
col[v[i].second]++;
}
all.init();
banned.init();
for(i = 1; i <= n; i++){
maxi[i] = col[i];
all.update(1, 1, n, i, col[i] + 1);
banned.update(1, 1, n, i, col[i] + 1);
}
ll dr = n + 1, st = n;
ll rez = 0;
for(i = n; i >= 1; i--){
while(st >= 1 && v[st].first * 2 > v[i].first){
all.add(1, 1, n, v[st].second, -1);
banned.add(1, 1, n, v[st].second, -1);
col[v[st].second]--;
st--;
}
if(i == n){
for(ll j = 1; j <= n; j++){
maxi[j] = col[j];
}
}
if(imp[i]){
rez += banned.all[1];
rez %= MOD;
if(v[i].first * 2 > v[n].first && i != n && maxi[v[i].second] == col[v[i].second]){
all.update(1, 1, n, v[i].second, 1);
rez += all.all[1];
all.update(1, 1, n, v[i].second, col[v[i].second] + 1);
rez %= MOD;
}
}
//all.update(1, 1, n, v[i].second, 1);
banned.update(1, 1, n, v[i].second, 1);
}
cout << rez;
return 0;
}
Compilation message
fish.cpp: In function 'int main()':
fish.cpp:89:8: warning: unused variable 'dr' [-Wunused-variable]
89 | ll dr = n + 1, st = n;
| ^~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
14 ms |
31572 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
15 ms |
31652 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
17 ms |
31584 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
15 ms |
31616 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
31616 KB |
Output is correct |
2 |
Incorrect |
15 ms |
31616 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
31668 KB |
Output is correct |
2 |
Incorrect |
508 ms |
43376 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
17 ms |
31588 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
18 ms |
31676 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
219 ms |
36304 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
17 ms |
31828 KB |
Output is correct |
2 |
Correct |
19 ms |
31828 KB |
Output is correct |
3 |
Incorrect |
18 ms |
31700 KB |
Output isn't correct |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
318 ms |
38936 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
514 ms |
44056 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
304 ms |
41032 KB |
Output is correct |
2 |
Incorrect |
552 ms |
44064 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
525 ms |
43220 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
570 ms |
44536 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
445 ms |
41812 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
630 ms |
46388 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
543 ms |
46172 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
742 ms |
48640 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |