| Task: | Binary tree |
| Sender: | cvele |
| Submission time: | 2019-01-18 17:52:43 +0200 |
| Language: | C++ |
| Status: | READY |
| Result: | 26 |
| group | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 0 |
| #2 | ACCEPTED | 26 |
| #3 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | 1 | details |
| #2 | ACCEPTED | 0.03 s | 1 | details |
| #3 | ACCEPTED | 0.01 s | 1 | details |
| #4 | ACCEPTED | 0.02 s | 1 | details |
| #5 | ACCEPTED | 0.01 s | 1 | details |
| #6 | ACCEPTED | 0.02 s | 1 | details |
| #7 | ACCEPTED | 0.01 s | 1 | details |
| #8 | ACCEPTED | 0.01 s | 1 | details |
| #9 | WRONG ANSWER | 0.03 s | 1 | details |
| #10 | ACCEPTED | 0.01 s | 1 | details |
| #11 | WRONG ANSWER | 0.02 s | 1 | details |
| #12 | ACCEPTED | 0.02 s | 1 | details |
| #13 | WRONG ANSWER | 0.02 s | 1 | details |
| #14 | WRONG ANSWER | 0.01 s | 1 | details |
| #15 | WRONG ANSWER | 0.01 s | 1 | details |
| #16 | WRONG ANSWER | 0.02 s | 1 | details |
| #17 | ACCEPTED | 0.02 s | 1 | details |
| #18 | ACCEPTED | 0.01 s | 1 | details |
| #19 | WRONG ANSWER | 0.01 s | 1 | details |
| #20 | WRONG ANSWER | 0.01 s | 1 | details |
| #21 | WRONG ANSWER | 0.02 s | 1 | details |
| #22 | ACCEPTED | 0.01 s | 1 | details |
| #23 | ACCEPTED | 0.01 s | 1 | details |
| #24 | ACCEPTED | 0.01 s | 1 | details |
| #25 | ACCEPTED | 0.01 s | 1 | details |
| #26 | ACCEPTED | 0.01 s | 1 | details |
| #27 | ACCEPTED | 0.03 s | 1 | details |
| #28 | ACCEPTED | 0.02 s | 1 | details |
| #29 | ACCEPTED | 0.02 s | 1 | details |
| #30 | ACCEPTED | 0.01 s | 1 | details |
| #31 | ACCEPTED | 0.01 s | 1 | details |
| #32 | ACCEPTED | 0.02 s | 1 | details |
| #33 | ACCEPTED | 0.03 s | 1 | details |
| #34 | ACCEPTED | 0.02 s | 1 | details |
| #35 | ACCEPTED | 0.02 s | 1 | details |
| #36 | ACCEPTED | 0.02 s | 2 | details |
| #37 | ACCEPTED | 0.01 s | 2 | details |
| #38 | ACCEPTED | 0.02 s | 2 | details |
| #39 | ACCEPTED | 0.02 s | 2 | details |
| #40 | ACCEPTED | 0.03 s | 2 | details |
| #41 | ACCEPTED | 0.02 s | 2 | details |
| #42 | ACCEPTED | 0.02 s | 2 | details |
| #43 | ACCEPTED | 0.02 s | 2 | details |
| #44 | ACCEPTED | 0.02 s | 2 | details |
| #45 | ACCEPTED | 0.02 s | 2 | details |
| #46 | ACCEPTED | 0.02 s | 3 | details |
| #47 | ACCEPTED | 0.02 s | 3 | details |
| #48 | ACCEPTED | 0.02 s | 3 | details |
| #49 | ACCEPTED | 0.02 s | 3 | details |
| #50 | ACCEPTED | 0.03 s | 3 | details |
| #51 | ACCEPTED | 0.01 s | 3 | details |
| #52 | ACCEPTED | 0.01 s | 3 | details |
| #53 | ACCEPTED | 0.03 s | 3 | details |
| #54 | ACCEPTED | 0.01 s | 3 | details |
| #55 | ACCEPTED | 0.24 s | 3 | details |
| #56 | ACCEPTED | 0.24 s | 3 | details |
| #57 | ACCEPTED | 0.25 s | 3 | details |
| #58 | ACCEPTED | 0.26 s | 3 | details |
| #59 | ACCEPTED | 0.25 s | 3 | details |
| #60 | ACCEPTED | 0.18 s | 3 | details |
| #61 | WRONG ANSWER | 0.20 s | 3 | details |
| #62 | ACCEPTED | 0.25 s | 3 | details |
| #63 | WRONG ANSWER | 0.10 s | 3 | details |
| #64 | ACCEPTED | 0.26 s | 3 | details |
| #65 | WRONG ANSWER | 0.20 s | 3 | details |
| #66 | ACCEPTED | 0.23 s | 3 | details |
| #67 | ACCEPTED | 0.02 s | 3 | details |
| #68 | ACCEPTED | 0.02 s | 3 | details |
| #69 | ACCEPTED | 0.02 s | 3 | details |
| #70 | ACCEPTED | 0.01 s | 3 | details |
| #71 | ACCEPTED | 0.01 s | 3 | details |
| #72 | ACCEPTED | 0.01 s | 3 | details |
| #73 | ACCEPTED | 0.02 s | 3 | details |
| #74 | ACCEPTED | 0.03 s | 3 | details |
| #75 | ACCEPTED | 0.03 s | 3 | details |
| #76 | ACCEPTED | 0.02 s | 3 | details |
| #77 | ACCEPTED | 0.01 s | 3 | details |
Code
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <cstring>
#include <climits>
#include <iomanip>
#include <bitset>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <list>
#include <map>
#include <unordered_map>
using namespace std;
const long long mod = (long long) 1e9 + 7;
int n, m;
long long fp(long long a, long long b) {
long long ans = 1;
a %= mod;
while (b > 0) {
if (b & 1) {
ans = (ans * a) % mod;
}
b >>= 1;
a = (a * a) % mod;
}
return ans;
}
pair <int, int> level(long long x) {
int ans = 1;
int t = 1;
while (x != 1) {
ans++;
if (x == 2) {
t = 1;
} else if (x == 3) {
t = 2;
}
x >>= 1;
}
return make_pair(n - ans + 1, t);
}
string tobin(long long x) {
string ans;
while (x > 0) {
if (x & 1) {
ans = '1' + ans;
} else {
ans = '0' + ans;
}
x >>= 1;
}
return ans;
}
int main() {
cin >> n >> m;
vector <long long> ve;
set <long long> se;
for (int i = 0; i < m; i++) {
long long x;
cin >> x;
//ve.push_back(x);
se.insert(x);
}
//sort(ve.begin(), ve.end());
vector <long long> vecc;
while (!se.empty()) {
long long tmp = *(--se.end());
long long lst = tmp;
while (!se.empty() && (tmp >> 1) >= *se.begin()) {
tmp >>= 1;
if (se.count(tmp)) {
se.erase(lst);
lst = tmp;
}
}
vecc.push_back(lst);
se.erase(lst);
}
long long lef = fp(2, n - 2), rig = fp(2, n - 2);
for (long long v : vecc) {
pair <int, int> here = level(v);
if (here.second == 1) {
lef -= fp(2, here.first - 1);
lef %= mod;
lef += mod;
lef %= mod;
} else {
rig -= fp(2, here.first - 1);
rig %= mod;
rig += mod;
rig %= mod;
}
}
cout << (lef * rig * 2) % mod << endl;
return 0;
}
Test details
Test 1
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 4 3
10 5 13 |
| correct output |
|---|
| 12 |
| user output |
|---|
| 12 |
Test 2
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 2 0 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 3
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 2 1
2 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 4
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 2 1
3 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 5
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 2 2
2 3 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 6
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 0 |
| correct output |
|---|
| 512 |
| user output |
|---|
| 512 |
Test 7
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 1
29 |
| correct output |
|---|
| 448 |
| user output |
|---|
| 448 |
Test 8
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 1
63 |
| correct output |
|---|
| 480 |
| user output |
|---|
| 480 |
Test 9
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 10
50 63 56 5 ... |
| correct output |
|---|
| 132 |
| user output |
|---|
| 110 |
Test 10
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 10
25 57 62 42 ... |
| correct output |
|---|
| 162 |
| user output |
|---|
| 162 |
Test 11
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 10
14 26 34 42 ... |
| correct output |
|---|
| 126 |
| user output |
|---|
| 98 |
Test 12
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 10
21 60 23 59 ... |
| correct output |
|---|
| 128 |
| user output |
|---|
| 128 |
Test 13
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 10
8 30 32 16 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 999999875 |
Test 14
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 20
46 39 55 24 ... |
| correct output |
|---|
| 48 |
| user output |
|---|
| 18 |
Test 15
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 25
36 23 27 33 ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 70 |
Test 16
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 62
42 11 4 61 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 2048 |
Test 17
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 32
62 38 57 35 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 18
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 21
38 51 47 35 ... |
| correct output |
|---|
| 60 |
| user output |
|---|
| 60 |
Test 19
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 31
59 15 3 26 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 999998983 |
Test 20
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 6 14
13 53 55 26 ... |
| correct output |
|---|
| 256 |
| user output |
|---|
| 999999911 |
Test 21
Group: 1
Verdict: WRONG ANSWER
| input |
|---|
| 5 10
5 17 21 7 ... |
| correct output |
|---|
| 6 |
| user output |
|---|
| 0 |
Test 22
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 6 5
38 18 31 44 ... |
| correct output |
|---|
| 312 |
| user output |
|---|
| 312 |
Test 23
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 0 |
| correct output |
|---|
| 8 |
| user output |
|---|
| 8 |
Test 24
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 1
2 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 25
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 1
3 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 26
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 2
4 6 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 27
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 2
4 7 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 28
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 2
5 6 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 29
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 2
5 7 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 30
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 2
3 6 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 31
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 3
4 5 6 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 32
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 3
4 6 7 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 33
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 3 4
4 5 6 7 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 34
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 5 0 |
| correct output |
|---|
| 128 |
| user output |
|---|
| 128 |
Test 35
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 5 1
14 |
| correct output |
|---|
| 96 |
| user output |
|---|
| 96 |
Test 36
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 2 0 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 37
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 3 0 |
| correct output |
|---|
| 8 |
| user output |
|---|
| 8 |
Test 38
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 4 0 |
| correct output |
|---|
| 32 |
| user output |
|---|
| 32 |
Test 39
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 23 0 |
| correct output |
|---|
| 92960636 |
| user output |
|---|
| 92960636 |
Test 40
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 36 0 |
| correct output |
|---|
| 635008130 |
| user output |
|---|
| 635008130 |
Test 41
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 42 0 |
| correct output |
|---|
| 993282280 |
| user output |
|---|
| 993282280 |
Test 42
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 57 0 |
| correct output |
|---|
| 608377687 |
| user output |
|---|
| 608377687 |
Test 43
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 58 0 |
| correct output |
|---|
| 433510734 |
| user output |
|---|
| 433510734 |
Test 44
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 59 0 |
| correct output |
|---|
| 734042929 |
| user output |
|---|
| 734042929 |
Test 45
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 60 0 |
| correct output |
|---|
| 936171702 |
| user output |
|---|
| 936171702 |
Test 46
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 2 0 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 47
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 2 1
2 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 48
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 2 1
3 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 49
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 2 2
2 3 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 50
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 59 0 |
| correct output |
|---|
| 734042929 |
| user output |
|---|
| 734042929 |
Test 51
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 0 |
| correct output |
|---|
| 936171702 |
| user output |
|---|
| 936171702 |
Test 52
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 1
2 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 53
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 1
576460752303423487 |
| correct output |
|---|
| 399775198 |
| user output |
|---|
| 399775198 |
Test 54
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 1
1152921504606846975 |
| correct output |
|---|
| 667973450 |
| user output |
|---|
| 667973450 |
Test 55
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 100000
793144025126277478 493960657696318193 320344157019848454 997683950258055349 ... |
| correct output |
|---|
| 12813436 |
| user output |
|---|
| 12813436 |
Test 56
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 100000
986789393060040220 494066507202684187 290830182157570659 210871095549437400 ... |
| correct output |
|---|
| 95910570 |
| user output |
|---|
| 95910570 |
Test 57
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 100000
562299894758506682 731132428235172865 481500339045425690 208947005967360560 ... |
| correct output |
|---|
| 331624281 |
| user output |
|---|
| 331624281 |
Test 58
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 100000
257846911019866261 803021202233459674 658685893766403373 874237705485665885 ... |
| correct output |
|---|
| 880725152 |
| user output |
|---|
| 880725152 |
Test 59
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 100000
681388061028265547 990382999862855868 290694941402209648 491574111397234946 ... |
| correct output |
|---|
| 768320742 |
| user output |
|---|
| 768320742 |
Test 60
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 100000
816968727394104576 879176301780517486 1075817811951859004 632046213104404023 ... |
| correct output |
|---|
| 111155168 |
| user output |
|---|
| 111155168 |
Test 61
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 60 100000
406817930303406656 101704482575856800 406817930303412346 813635860606874021 ... |
| correct output |
|---|
| 295651662 |
| user output |
|---|
| 584065905 |
Test 62
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 59 100000
234885934259928845 244746379456935555 40048493361902167 530369614866009610 ... |
| correct output |
|---|
| 78892926 |
| user output |
|---|
| 78892926 |
Test 63
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 16 65534
26355 15205 3420 22822 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 306674506 |
Test 64
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 60 99999
1030879879260090869 925369330408563145 403438777989811739 321883235203598800 ... |
| correct output |
|---|
| 596899803 |
| user output |
|---|
| 596899803 |
Test 65
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| 60 100000
418885324976523921 418885324976523063 837770649953084829 104721331244134167 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 326618257 |
Test 66
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 43 100000
5497882741157 4163319796881 3705445016042 8647080351851 ... |
| correct output |
|---|
| 317037701 |
| user output |
|---|
| 317037701 |
Test 67
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 0 |
| correct output |
|---|
| 8 |
| user output |
|---|
| 8 |
Test 68
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 1
2 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 69
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 1
3 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 70
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 2
4 6 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 71
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 2
4 7 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 72
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 2
5 6 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 73
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 2
5 7 |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 74
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 2
3 6 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 75
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 3
4 5 6 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 76
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 3
4 6 7 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 77
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 3 4
4 5 6 7 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
