Task: | Ositus |
Sender: | shmoul |
Submission time: | 2021-10-16 16:09:26 +0300 |
Language: | C++ (C++17) |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | WRONG ANSWER | 0 |
#2 | WRONG ANSWER | 0 |
#3 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
#2 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
#3 | WRONG ANSWER | 0.01 s | 1, 2, 3 | details |
#4 | WRONG ANSWER | 0.01 s | 1, 2, 3 | details |
#5 | WRONG ANSWER | 0.01 s | 2, 3 | details |
#6 | RUNTIME ERROR | 0.01 s | 3 | details |
#7 | RUNTIME ERROR | 0.03 s | 3 | details |
Compiler report
input/code.cpp: In function 'std::vector<std::pair<int, int> > GetCutRanges(std::__cxx11::string)': input/code.cpp:13:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i=0;i<s.length();i++) ~^~~~~~~~~~~ input/code.cpp:17:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(;j<s.length();j++) ~^~~~~~~~~~~ input/code.cpp: In function 'long long int calculate(std::__cxx11::string)': input/code.cpp:40:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i=0;i<CutRanges.size();i++) ~^~~~~~~~~~~~~~~~~
Code
#include <iostream> #include <map> #include <list> #include <bitset> #include <vector> #include <cmath> using namespace std; vector<pair<int, int>> GetCutRanges(string s) { bitset<256> Visited; vector<pair<int, int>> CutRanges; for(int i=0;i<s.length();i++) { int j=i+1; Visited[i]=true; for(;j<s.length();j++) { if(Visited[s[j]]) { pair<int, int> RangeContainsCut = {i, j}; CutRanges.push_back(RangeContainsCut); break; } Visited[s[i]] = true; } Visited.reset(); } return CutRanges; } long long calculate(string s) { string temp = s; vector<pair<int, int>> CutRanges = GetCutRanges(s); list<int> OverlapLengths; long long answer=1; if(CutRanges.size()<1) return pow(2, s.length()-1); int Multiplier = pow(2, s.length()-1-CutRanges.back().second); for(int i=0;i<CutRanges.size();i++) { pair<int,int> CurrentPair = CutRanges[i]; //cout<<answer<<endl<<CurrentPair.first<<" : "<<CurrentPair.second<<endl; answer*= pow(2, CurrentPair.second-CurrentPair.first-1); if(CurrentPair!=CutRanges.back() && CutRanges[i+1].first<CurrentPair.second) { const int OverlapLength = CurrentPair.second-CutRanges[i+1].first+1; OverlapLengths.push_back(OverlapLength); } } for(int i : OverlapLengths) { answer+=(long long)(i+1); } if(OverlapLengths.size()==0) { answer++; } answer*=Multiplier; //cout<<endl<<answer; return answer; } int main() { string s; cin>>s; cout<<calculate(s); return 0; }
Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
a |
correct output |
---|
1 |
user output |
---|
1 |
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
abcdefghij |
correct output |
---|
512 |
user output |
---|
512 |
Test 3
Group: 1, 2, 3
Verdict: WRONG ANSWER
input |
---|
abcabaacbc |
correct output |
---|
120 |
user output |
---|
8212 |
Test 4
Group: 1, 2, 3
Verdict: WRONG ANSWER
input |
---|
aaxxxxxxaa |
correct output |
---|
4 |
user output |
---|
524392 |
Test 5
Group: 2, 3
Verdict: WRONG ANSWER
input |
---|
mfyzvoxmppoxcvktmcjkryyocfweub... |
correct output |
---|
643221148 |
user output |
---|
11480 |
Test 6
Group: 3
Verdict: RUNTIME ERROR
input |
---|
weinscqmmpgbrlboocvtbptgbahmwv... |
correct output |
---|
831644159 |
user output |
---|
(empty) |
Error:
free(): invalid pointer
Test 7
Group: 3
Verdict: RUNTIME ERROR
input |
---|
sxaoxcyrjoeieyinaqxwukgzdnhhsw... |
correct output |
---|
816016015 |
user output |
---|
(empty) |
Error:
free(): invalid pointer