提出 #319908


ソースコード 拡げる

#include <iostream>
#include <stdio.h>
#include <set>
#include <map>
#include <list>
#include <vector>
#include <algorithm>
#include <cmath>
#include <limits.h>
#include <string>
#include <queue>
#include <functional>
#include <stack>
#include <complex>
#include <stdlib.h>
#include <string.h>
using namespace std;

namespace{
	#define		CAST( T, val )		( (T)( val ) )
	#define		CASE( lb )			break; case lb:
	#define		CASE_CONTINUE( lb )	case lb:
	#define		CASE_DEFAULT		break; default:
	#define		For( i, s )			for(int i= 0; i< (int)s; i++)
	#define		ForA( i, a, s )		for(int i= (int)a; i< (int)s; i++)
	#define		ForSize( i, s )		for(int i= 0, size= (int)s; i< size; i++)
	#define		ForSizeA( i, a, s )	for(int i= (int)a, size= (int)s; i< size; i++)
	#define		ForItr( itr, con )	for(auto itr= con.begin(); itr!= con.end(); itr++)
	#define		ForStr( i, str )	for(int i= 0; str[i]; i++)
	#define		GOTO( lb )			goto lb
	#define		LABEL( lb )			lb:

	typedef		long long		LLint;
	typedef		unsigned int	Uint;
	typedef		unsigned char	Uchar;
	typedef		unsigned short	Ushort;

	const double EPS= 0.00000000023283064365386962890625;	//	2^-32
	template <typename T> class priority_queue_less : public priority_queue<T,vector<T>,greater<T> >{};
}
//	合同式
namespace{
	class Mod{
		typedef		int		Type;
	public:
		static const Type N= 1000000007;
		Type x;
		
		//	opr, cst
		Mod operator +(const Mod& m) const{ return Mod(x+m.x); }
		const Mod& operator +=(const Mod& m){ x= (x+m.x)%N; return *this; }
		Mod operator -(const Mod& m) const{ return Mod(x-m.x); }
		const Mod& operator -=(const Mod& m){ x= (x-m.x)%N; return *this; }
		Mod operator *(const Mod& m) const{ return Mod(x*m.x); }
		const Mod& operator *=(const Mod& m){ x= (x*m.x)%N; return *this; }
		Mod operator /(const Mod& m) const{
			//	フェルマーの小定理より, m.x の逆元は m.x^( HOU-2 )
			const Type n= N-2; Type p= m.x, r= x; for(Type b= 1; b< n; b<<= 1){ if( n & b ) r= r*p%N; p= p*p%N; } return r;
		}
		const Mod& operator /=(const Mod& m){ return *this= *this /m; }
		Mod(){}
		Mod(const Type x) : x(x%N){}
	};
	istream& operator >>(istream& in, Mod& p){
		return in>> p.x;
	}
	ostream& operator <<(ostream& out, const Mod& p){
		return out<< p.x;
	}
}

const int Ten5= 100000;
int FMem[Ten5];
Mod DP[Ten5];

int main(){
	int N, M;
	cin>> N>> M;

	int *F= FMem;
	For( i, N ){ cin>> F[i]; F[i]--; }

	Mod* dp= DP;
	set<int> set;
	dp[0]= 1;
	ForA( n, 1, N ){
		set.clear();
		set.insert( F[n] );

		for(int i= n-1;; i--){
			if( i == -1 ){
				dp[n]+= 1;
				break;
			}else{
				dp[n]+= dp[i];
				if( set.find( F[i] )!= set.end() ) break;
				set.insert( F[i] );
			}
		}
	}

	cout<< dp[N-1]<< endl;
	
	return 0;
}

提出情報

提出日時
問題 D - サプリメント
ユーザ BGSC
言語 C++11 (GCC 4.8.1)
得点 30
コード長 2796 Byte
結果 TLE
実行時間 3034 ms
メモリ 1648 KiB

ジャッジ結果

セット名 Sample Subtask1 Subtask2
得点 / 配点 0 / 0 30 / 30 0 / 70
結果
AC × 2
AC × 22
AC × 32
TLE × 10
セット名 テストケース
Sample subtask0-sample01.txt, subtask0-sample02.txt
Subtask1 subtask0-sample01.txt, subtask0-sample02.txt, 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
Subtask2 subtask0-sample01.txt, subtask0-sample02.txt, 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, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt
ケース名 結果 実行時間 メモリ
subtask0-sample01.txt AC 26 ms 920 KiB
subtask0-sample02.txt AC 25 ms 860 KiB
subtask1-01.txt AC 26 ms 924 KiB
subtask1-02.txt AC 27 ms 924 KiB
subtask1-03.txt AC 28 ms 920 KiB
subtask1-04.txt AC 65 ms 924 KiB
subtask1-05.txt AC 26 ms 920 KiB
subtask1-06.txt AC 31 ms 924 KiB
subtask1-07.txt AC 76 ms 924 KiB
subtask1-08.txt AC 34 ms 924 KiB
subtask1-09.txt AC 31 ms 996 KiB
subtask1-10.txt AC 35 ms 928 KiB
subtask1-11.txt AC 26 ms 1000 KiB
subtask1-12.txt AC 53 ms 1004 KiB
subtask1-13.txt AC 62 ms 1000 KiB
subtask1-14.txt AC 75 ms 1004 KiB
subtask1-15.txt AC 29 ms 924 KiB
subtask1-16.txt AC 34 ms 996 KiB
subtask1-17.txt AC 107 ms 1000 KiB
subtask1-18.txt AC 2254 ms 1124 KiB
subtask1-19.txt AC 30 ms 1048 KiB
subtask1-20.txt AC 32 ms 924 KiB
subtask2-01.txt AC 365 ms 1120 KiB
subtask2-02.txt AC 53 ms 1252 KiB
subtask2-03.txt TLE 3034 ms 1380 KiB
subtask2-04.txt TLE 3034 ms 1648 KiB
subtask2-05.txt AC 95 ms 1636 KiB
subtask2-06.txt AC 73 ms 1636 KiB
subtask2-07.txt AC 73 ms 1644 KiB
subtask2-08.txt TLE 3034 ms 1504 KiB
subtask2-09.txt AC 239 ms 1636 KiB
subtask2-10.txt TLE 3033 ms 1504 KiB
subtask2-11.txt AC 243 ms 1636 KiB
subtask2-12.txt TLE 3033 ms 1508 KiB
subtask2-13.txt TLE 3033 ms 1632 KiB
subtask2-14.txt AC 100 ms 1636 KiB
subtask2-15.txt TLE 3034 ms 1636 KiB
subtask2-16.txt AC 557 ms 1636 KiB
subtask2-17.txt TLE 3033 ms 1508 KiB
subtask2-18.txt TLE 3033 ms 1640 KiB
subtask2-19.txt AC 100 ms 1636 KiB
subtask2-20.txt TLE 3034 ms 1636 KiB