Submission #245607


Source Code Expand

#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>

#define REP(i,s,n) for(int i=(int)(s);i<(int)(n);i++)

using namespace std;
typedef long long int ll;
const double EPS=1e-9;

const int N = 24;
const int B = 1 << 23;

string s;

int fib[N];

void fib_init(void) {
	int x = 0;
	int y = 1;
	REP(i,0,N) {
		fib[i] = x;
		int r = x + y;
		x = y;
		y = r;
	}
}

int dp[N][B];

// if not found, return -1.
int rec(int k,int b) {
	int &r = dp[k][b];
	if(r >= -1) return r;
	if(k == 1) {
		return s.substr(b,fib[k]) == "b" ? 0 : -1;
	}
	if(k == 2) {
		return s.substr(b,fib[k]) == "a" ? 0 : -1;
	}
	// [k-3] [k-2] [k-2]
	int f3 = fib[k-3];
	int f2 = fib[k-2];
	if(s.substr(b + f3,f2) == s.substr(b + f3 + f2, f2)) {
		int sub = rec(k-2, b + f3);
		if(sub >= 0)
			return sub * 4 + 1;
	}
	if(s.substr(b ,f2) == s.substr(b + f3 + f2, f2)) {
		int sub = rec(k-2, b + f3);
		if(sub >= 0)
			return sub * 4;
	}
	if(s.substr(b,f2) == s.substr(b + f2, f2)) {
		int sub = rec(k-2, b + f3);
		if(sub >= 0)
			return sub * 4 + 2;
	}
	return -1;
}

int main(void){
	cin>>s;
	fib_init();
	int n;
	if(s == "a") {
		cout << "2 0" << endl;
		return 0;
	}
	if(s == "b") {
		cout << "1 0" << endl;
		return 0;
	}
	REP(i,0,N) {
		if(s.size() == fib[i]) {
			n=i;
			break;
		}
	}
	cout << n << " " << rec(0,n) << endl;
}

Submission Info

Submission Time
Task E - ab文字列
User kobae964
Language C++ (G++ 4.6.4)
Score 100
Code Size 1514 Byte
Status AC
Exec Time 25 ms
Memory 932 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 17
Set Name Test Cases
All test_11_511.txt, test_13_2047.txt, test_15_8191.txt, test_16_16383.txt, test_18_65535.txt, test_1_0.txt, test_22_0.txt, test_22_1048575.txt, test_2_0.txt, test_3_0.txt, test_3_1.txt, test_4_3.txt, test_5_7.txt, test_6_15.txt, test_8_63.txt, sample_01.txt, sample_02.txt
Case Name Status Exec Time Memory
sample_01.txt AC 23 ms 808 KB
sample_02.txt AC 23 ms 932 KB
test_11_511.txt AC 25 ms 900 KB
test_13_2047.txt AC 22 ms 928 KB
test_15_8191.txt AC 22 ms 808 KB
test_16_16383.txt AC 24 ms 920 KB
test_18_65535.txt AC 22 ms 820 KB
test_1_0.txt AC 23 ms 804 KB
test_22_0.txt AC 22 ms 804 KB
test_22_1048575.txt AC 24 ms 752 KB
test_2_0.txt AC 23 ms 680 KB
test_3_0.txt AC 21 ms 924 KB
test_3_1.txt AC 23 ms 808 KB
test_4_3.txt AC 22 ms 924 KB
test_5_7.txt AC 25 ms 928 KB
test_6_15.txt AC 24 ms 808 KB
test_8_63.txt AC 23 ms 932 KB