Task: | Ositus |
Sender: | shmoul |
Submission time: | 2021-10-17 19:44:49 +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 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
#5 | WRONG ANSWER | 0.01 s | 2, 3 | details |
#6 | WRONG ANSWER | 0.01 s | 3 | details |
#7 | WRONG ANSWER | 0.08 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:43:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i=0;i<CutRanges.size();i++) ~^~~~~~~~~~~~~~~~~ input/code.cpp:59: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[s[i]]=true;for(;j<s.length();j++){if(Visited[s[j]]){if(s[j]==s[i]){pair<int, int> RangeContainsCut = {i, j};CutRanges.push_back(RangeContainsCut);}break;}Visited[s[j]] = 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 StartMultiplier = pow(2, CutRanges.front().first);int EndMultiplier = pow(2, s.length()-1-CutRanges.back().second);for(int i=0;i<CutRanges.size();i++){pair<int,int> CurrentPair = CutRanges[i];//answer *= CurrentPair.second-CurrentPair.first;//cout<<answer<<endl<<CurrentPair.first<<"-"<<CurrentPair.second<<endl;int OverlapLength = 0;if(CurrentPair!=CutRanges.back() && CutRanges[i+1].first<CurrentPair.second){OverlapLength = CurrentPair.second-CutRanges[i+1].first;//answer -= OverlapLength;OverlapLengths.push_back(OverlapLength);}answer = answer*pow(2,CurrentPair.second-OverlapLength-CurrentPair.first) - 1;}int NumNonSamePairs = 0;for(int i=0;i<CutRanges.size();i++){pair<int,int> CurrentPair = CutRanges[i];if(CurrentPair!=CutRanges.back() && s[CutRanges[i].first]!=s[CutRanges[i+1].first]){NumNonSamePairs++;}}answer*=pow(2, NumNonSamePairs);answer*=StartMultiplier;answer*=EndMultiplier;answer/=OverlapLengths.size()+1;for(int i : OverlapLengths){answer+=i-1;}//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 |
---|
222 |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
aaxxxxxxaa |
correct output |
---|
4 |
user output |
---|
4 |
Test 5
Group: 2, 3
Verdict: WRONG ANSWER
input |
---|
mfyzvoxmppoxcvktmcjkryyocfweub... |
correct output |
---|
643221148 |
user output |
---|
11 |
Test 6
Group: 3
Verdict: WRONG ANSWER
input |
---|
weinscqmmpgbrlboocvtbptgbahmwv... |
correct output |
---|
831644159 |
user output |
---|
1014 |
Test 7
Group: 3
Verdict: WRONG ANSWER
input |
---|
sxaoxcyrjoeieyinaqxwukgzdnhhsw... |
correct output |
---|
816016015 |
user output |
---|
192470 |