This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "Anna.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
char diff(char a,char b){
if(a!='R' and b!='R')
return 'R';
if(a!='G' and b!='G')
return 'G';
if(a!='B' and b!='B')
return 'B';
}
vector<int> convert(int x){
vector<int> r;
for(int i=18;i>=0;i--)
if(x&(1<<i))
r.push_back(1);
else
r.push_back(0);
return r;
}
pair<string, int> anna(int n, string s) {
string T;
int N=n;
string S=s;
for(int i=0;i<N;i++)
if(S[i]=='R')
T.push_back('G');
else
T.push_back('R');
if(N<=130)
return {T,N};
int pok=0;
int len=50;
while(true){
if(pok+len>N)
break;
int poz=pok+2;
T[pok]=T[pok+1]=diff(S[pok],S[pok+1]);
for(int i=pok+2;i<=pok+6;i++)
T[i]=diff(T[i-1],S[i]);
pok+=7;
if(s[pok]!=T[pok-1]){
T[pok]=T[pok-1];
pok++;
}
else{
T[pok]=T[pok+1]=diff(S[pok],S[pok+1]);
pok+=2;
}
vector<int> sta=convert(pok);
/* cout<<"CONVERT "<<poz<<endl;
for(int x:sta)
cout<<x<<" ";
cout<<endl;*/
// cerr<<"POCINJEM PISANJE NA "<<pok<<endl;
for(int i=0;i<sta.size();i++){
if(sta[i]==1){
//cout<<"ISTI NA "<<pok<<" "<<pok+1<<endl;
T[pok]=T[pok+1]=diff(S[pok],S[pok+1]);
pok+=2;
continue;
}
if(i==sta.size()-1){
T[pok]=diff(S[pok],S[pok]);
T[pok+1]=diff(S[pok+1],T[pok]);
pok+=2;
continue;
}
if(sta[i+1]==1){
T[pok]=diff(S[pok],S[pok]);
T[pok+1]=diff(S[pok+1],T[pok]);
pok+=2;
continue;
}
T[pok+1]=T[pok+2]=diff(S[pok+1],S[pok+2]);
T[pok]=diff(S[pok],T[pok+1]);
T[pok+3]=diff(S[pok+3],T[pok+2]);
pok+=4;
i++;
}
}
return {T,130};
}
#include "Anna.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
namespace {
int N,L;
};
void init(int n, int l) {
::N=n;
::L=l;
}
int findbegin(string s){
for(int i=0;i<s.size();i++){
string a=s.substr(i,6);
bool dob=true;
for(int j=1;j<a.size();j++)
if(a[j]==a[j-1])
dob=false;
if(dob)
return i;
}
}
int citaj(string s){
int r=0;
for(int i=0;i<s.size();i+=2){
r*=2;
if(s[i]==s[i+1])
r++;
}
return r;
}
int bruno(string s){
if(::N == ::L)
return 1;
// cout<<s<<endl;
int poc=findbegin(s);
// cout<<op<<endl;
while(s[poc]!=s[poc+1])
poc++;
poc+=2;
//cout<<s.substr(poc,38)<<endl;
int p=citaj(s.substr(poc,38));
// cout<<poc<<" "<<p<<endl;
return p-poc+1;
}
Compilation message (stderr)
Anna.cpp: In function 'std::pair<std::__cxx11::basic_string<char>, int> anna(int, std::string)':
Anna.cpp:58:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
58 | for(int i=0;i<sta.size();i++){
| ~^~~~~~~~~~~
Anna.cpp:65:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
65 | if(i==sta.size()-1){
| ~^~~~~~~~~~~~~~
Anna.cpp:38:11: warning: unused variable 'poz' [-Wunused-variable]
38 | int poz=pok+2;
| ^~~
Anna.cpp: In function 'char diff(char, char)':
Anna.cpp:12:1: warning: control reaches end of non-void function [-Wreturn-type]
12 | }
| ^
Bruno.cpp: In function 'int findbegin(std::string)':
Bruno.cpp:13:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
13 | for(int i=0;i<s.size();i++){
| ~^~~~~~~~~
Bruno.cpp:16:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
16 | for(int j=1;j<a.size();j++)
| ~^~~~~~~~~
Bruno.cpp: In function 'int citaj(std::string)':
Bruno.cpp:25:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
25 | for(int i=0;i<s.size();i+=2){
| ~^~~~~~~~~
Bruno.cpp: In function 'int findbegin(std::string)':
Bruno.cpp:22:1: warning: control reaches end of non-void function [-Wreturn-type]
22 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |