#include "Anna.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
namespace {
vector<long long> fib(65);
void genFib(){
fib[1] = 1;
for(int i=2;i<65;i++)fib[i]=fib[i-1]+fib[i-2];
}
void blockp(vector<int> block){
long long ans = 0;
for(int i=0;i<block.size();i++){
if(block[i])ans+=fib[block.size()-i+1];
}
for(int bit=0;bit<44;bit++)Send(min(1ll,ans&(1ll<<bit)));
}
void process(vector<int> arr){
genFib();
for(int blocks=0;blocks<1588;blocks++){
vector<int> curr;
for(int i=0;i<63;i++)curr.emplace_back(arr[blocks*63+i]);
blockp(curr);
}
}
}
void Anna(int N, std::vector<char> S) {
bool foundX = false;
S.emplace_back('$');
vector<int> bits;
int founder = -2;
bool edge = false;
for(int i=0;i<N;i++){
if(S[i]=='X'){
if(foundX)bits.emplace_back(0);
else {
foundX = true;
founder = i;
bits.emplace_back(1);
}
} else if(S[i]=='Y'){
bits.emplace_back(0);
} else if(S[i]=='Z'){
if(!foundX or S[i+1]=='Z' or i-1==founder){
bits.emplace_back(0);
if(i-1==founder and S[i+1]!='Z')edge = true;
} else bits.emplace_back(1);
}
}
while(bits.size()<100044)bits.emplace_back(0);
process(bits);
if(edge)Send(0);
}
#include "Bruno.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
namespace {
vector<long long> fib(65);
void genFib(){
fib[1] = 1;
for(int i=2;i<65;i++)fib[i]=fib[i-1]+fib[i-2];
}
vector<int> blockp(long long tar){
vector<int> ans = {0};
for(int i=0;i<63;i++){
if(ans.back()==0 and fib[63-i+1]<=tar){
ans.emplace_back(1);
tar-=fib[63-i+1];
} else ans.emplace_back(0);
}
ans.erase(ans.begin());
return ans;
}
vector<int> process(vector<int> arr){
genFib();
vector<int> res;
for(int block=0;block<1588;block++){
long long curr = 0;
for(int i=0;i<44;i++)if(arr[block*44+i])curr|=(1ll<<i);
auto ans = blockp(curr);
for(int&i:ans)res.emplace_back(i);
}
return res;
}
} // namespace
void Bruno(int N, int L, std::vector<int> A) {
vector<int> PR;
// Process A into PR
PR = process(A);
PR.erase(PR.begin()+N,PR.end());
// Processing end
vector<bool> vis(N);
vector<int> po;
for(int i=0;i<N;i++){
if(PR[i]==1)po.emplace_back(i);
}
if(L==69873){
po.insert(po.begin()+1,po[0]+1);
}
for(int x=1;x<po.size();x++){
for(int i=po[x]-1;i>po[x-1];i--){
Remove(i);
vis[i]=true;
}
vis[po[x]]=true;
Remove(po[x]);
}
for(int i=0;i<N;i++)if(!vis[i])Remove(i);
}
Compilation message
Anna.cpp: In function 'void {anonymous}::blockp(std::vector<int>)':
Anna.cpp:15:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
15 | for(int i=0;i<block.size();i++){
| ~^~~~~~~~~~~~~
Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:50:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
50 | for(int x=1;x<po.size();x++){
| ~^~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
3996 KB |
Output is correct |
2 |
Correct |
9 ms |
3752 KB |
Output is correct |
3 |
Correct |
12 ms |
3840 KB |
Output is correct |
4 |
Correct |
10 ms |
4000 KB |
Output is correct |
5 |
Correct |
9 ms |
3928 KB |
Output is correct |
6 |
Correct |
9 ms |
4000 KB |
Output is correct |
7 |
Correct |
9 ms |
4016 KB |
Output is correct |
8 |
Correct |
9 ms |
4116 KB |
Output is correct |
9 |
Correct |
8 ms |
3740 KB |
Output is correct |
10 |
Correct |
9 ms |
4008 KB |
Output is correct |
11 |
Correct |
10 ms |
3740 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
34 ms |
9144 KB |
Output is correct |
2 |
Correct |
32 ms |
9164 KB |
Output is correct |
3 |
Correct |
31 ms |
9120 KB |
Output is correct |
4 |
Correct |
32 ms |
9024 KB |
Output is correct |
5 |
Correct |
29 ms |
9124 KB |
Output is correct |
6 |
Correct |
34 ms |
9052 KB |
Output is correct |
7 |
Correct |
36 ms |
9056 KB |
Output is correct |
8 |
Correct |
35 ms |
9308 KB |
Output is correct |
9 |
Correct |
34 ms |
9044 KB |
Output is correct |
10 |
Correct |
33 ms |
9376 KB |
Output is correct |
11 |
Correct |
34 ms |
9292 KB |
Output is correct |
12 |
Correct |
33 ms |
9036 KB |
Output is correct |
13 |
Correct |
39 ms |
8964 KB |
Output is correct |
14 |
Correct |
41 ms |
9184 KB |
Output is correct |
15 |
Correct |
39 ms |
9284 KB |
Output is correct |
16 |
Correct |
36 ms |
9184 KB |
Output is correct |
17 |
Correct |
39 ms |
8964 KB |
Output is correct |
18 |
Correct |
39 ms |
8928 KB |
Output is correct |
19 |
Correct |
39 ms |
9032 KB |
Output is correct |
20 |
Correct |
34 ms |
9280 KB |
Output is correct |
21 |
Correct |
33 ms |
9124 KB |
Output is correct |
22 |
Correct |
39 ms |
8956 KB |
Output is correct |
23 |
Correct |
34 ms |
9284 KB |
Output is correct |
24 |
Correct |
33 ms |
9288 KB |
Output is correct |
25 |
Correct |
39 ms |
9024 KB |
Output is correct |
26 |
Correct |
43 ms |
8992 KB |
Output is correct |
27 |
Correct |
40 ms |
9032 KB |
Output is correct |
28 |
Correct |
40 ms |
9156 KB |
Output is correct |
29 |
Correct |
39 ms |
8996 KB |
Output is correct |
30 |
Correct |
39 ms |
9132 KB |
Output is correct |
31 |
Correct |
41 ms |
9136 KB |
Output is correct |
32 |
Correct |
34 ms |
9080 KB |
Output is correct |
33 |
Correct |
37 ms |
9080 KB |
Output is correct |