Submission #338813


Source Code Expand

#include <iostream>
#include <algorithm>
#include <string>

long long int min_nico_count = 0;

long long int count_nico( const std::string& s )
{
	long long int total_nico_count = 0;
	
	char expected_char = '2';
	long long int nico_count = 0;
	
	for ( int n = 0; n < s.size(); n++ )
	{
		if ( s[ n ] == expected_char )
		{
			if ( s[ n ] == '5' )
			{
				nico_count++;
			}
		}
		else
		{
			total_nico_count += ( nico_count * ( nico_count + 1 ) ) / 2;
			nico_count = 0;
		}
		
		if ( s[ n ] == '2' )
		{
			expected_char = '5';
		}
		else
		{
			expected_char = '2';
		}
	}
	
	total_nico_count += ( nico_count * ( nico_count + 1 ) ) / 2;
	nico_count = 0;
	
	// std::cout << s << " : " << total_nico_count << std::endl;
	
	return total_nico_count;
}

bool is_correct_password( const std::string& s )
{
	return count_nico( s ) >= min_nico_count;
}

long long int count_recursive( const std::string& s )
{
	std::string::size_type i = s.find( '?' );
	
	if ( i == std::string::npos )
	{
		return ( int ) is_correct_password( s );
	}
	
	long long int count = 0;
	
	for ( int n = 0; n < 10; n++ )
	{
		std::string s2 = s.substr( 0, i ) + static_cast< char >( '0' + n ) + s.substr( i + 1 );
		count += count_recursive( s2 );
		count %= 1000000007;
	}
	
	return count;
}

int main( int argc, char** argv )
{
	long long int length = 0;
	
	std::string s;
	
	std::cin >> length >> min_nico_count;
	std::cin >> s;
	
	std::cout << count_recursive( s ) << std::endl;
	
	/*
	long long int a = 0;
	long long int q_count = std::count( s.begin(), s.end(), '?' );
	
	for ( int n = 0; n < q_count; n++ )
	{
		a *= 10;
	}
	
	a %= 1000000007;
	*/
	
	// std::cout << q_count << " " << a << std::endl;
	
    return 0;
}

Submission Info

Submission Time
Task A - ニコニコ文字列2
User jepupu
Language C++ (G++ 4.6.4)
Score 0
Code Size 1795 Byte
Status TLE
Exec Time 2035 ms
Memory 1008 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 20
Status
AC × 1
TLE × 1
AC × 5
TLE × 17
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt
Case Name Status Exec Time Memory
sample_01.txt AC 27 ms 916 KB
sample_02.txt TLE 2033 ms 872 KB
subtask1_01.txt AC 26 ms 848 KB
subtask1_02.txt AC 24 ms 924 KB
subtask1_03.txt AC 28 ms 804 KB
subtask1_04.txt AC 26 ms 796 KB
subtask1_05.txt TLE 2034 ms 988 KB
subtask1_06.txt TLE 2033 ms 1000 KB
subtask1_07.txt TLE 2035 ms 996 KB
subtask1_08.txt TLE 2032 ms 1004 KB
subtask1_09.txt TLE 2035 ms 1008 KB
subtask1_10.txt TLE 2034 ms 876 KB
subtask1_11.txt TLE 2032 ms 1004 KB
subtask1_12.txt TLE 2035 ms 996 KB
subtask1_13.txt TLE 2033 ms 984 KB
subtask1_14.txt TLE 2034 ms 1000 KB
subtask1_15.txt TLE 2034 ms 996 KB
subtask1_16.txt TLE 2035 ms 996 KB
subtask1_17.txt TLE 2033 ms 1008 KB
subtask1_18.txt AC 27 ms 796 KB
subtask1_19.txt TLE 2034 ms 1000 KB
subtask1_20.txt TLE 2032 ms 1004 KB
subtask1_21.txt TLE 2034 ms 996 KB
subtask1_22.txt TLE 2033 ms 1008 KB