| Task: | Ositus |
| Sender: | MojoLake |
| Submission time: | 2021-10-04 23:29:15 +0300 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 40 |
| #2 | ACCEPTED | 25 |
| #3 | ACCEPTED | 35 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
| #2 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
| #4 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
| #5 | ACCEPTED | 0.01 s | 2, 3 | details |
| #6 | ACCEPTED | 0.01 s | 3 | details |
| #7 | ACCEPTED | 0.61 s | 3 | details |
Code
#include <iostream>
#include <string>
#include <set>
#define mod 1000000007
#define ll long long
using namespace std;
ll int dp[1000100];
string str;
ll int find_ans(unsigned ll int ind){
set<char> chars;
ll int first_ind = ind;
ll int ans = 0;
if(ind == str.length() - 2){
if(str[ind] == str[ind+1]){dp[ind] = 1; return 1;}
else{dp[ind] = 2; return 2;}
}
if(ind > str.length() - 2)return 1;
while(true){
if(ind > str.length()-1 || chars.find(str[ind]) != chars.end())break;
chars.insert(str[ind]);
++ind;
if(ind > str.length()-1)ans += 1;
else{
if(dp[ind] == -1){
ans = (ans + find_ans(ind)) %mod;}
else{ans = (ans + dp[ind])%mod;}
}}
dp[first_ind] = ans %mod;
ans = ans %mod;
return ans;
}
int main()
{
for(int i = 0; i < 1000100; ++i){
dp[i] = -1;
}
string x; getline(cin, x);
if(x.length() == 1)cout << 1;
else{
dp[x.length()-1] = 1;
str = x;
cout << find_ans(0);}
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: ACCEPTED
| input |
|---|
| abcabaacbc |
| correct output |
|---|
| 120 |
| user output |
|---|
| 120 |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| aaxxxxxxaa |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 5
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| mfyzvoxmppoxcvktmcjkryyocfweub... |
| correct output |
|---|
| 643221148 |
| user output |
|---|
| 643221148 |
Test 6
Group: 3
Verdict: ACCEPTED
| input |
|---|
| weinscqmmpgbrlboocvtbptgbahmwv... |
| correct output |
|---|
| 831644159 |
| user output |
|---|
| 831644159 |
Test 7
Group: 3
Verdict: ACCEPTED
| input |
|---|
| sxaoxcyrjoeieyinaqxwukgzdnhhsw... |
| correct output |
|---|
| 816016015 |
| user output |
|---|
| 816016015 |
