| 提出番号 | 2100 |
|---|---|
| 提出者 | tubuann |
| 言語 | C++ |
| 提出日時 | 2018-08-04 15:16:01 |
| 問題名 | (71)音楽ゲーム |
| 結果 | AC |
| 点数 | 100% |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 100% | 10ms | 8704KB |
| 2 | AC | 100% | 8ms | 7984KB |
| 3 | AC | 100% | 8ms | 8304KB |
| 4 | AC | 100% | 18ms | 8432KB |
| 5 | AC | 100% | 15ms | 8720KB |
| 6 | AC | 100% | 18ms | 7760KB |
| 7 | AC | 100% | 3ms | 8080KB |
| 8 | AC | 100% | 18ms | 8416KB |
| 9 | AC | 100% | 26ms | 9488KB |
| 10 | AC | 100% | 18ms | 8016KB |
| 11 | AC | 100% | 20ms | 8496KB |
| 12 | AC | 100% | 33ms | 10560KB |
| 13 | AC | 100% | 9ms | 8480KB |
| 14 | AC | 100% | 24ms | 9520KB |
| 15 | AC | 100% | 6ms | 8672KB |
| 16 | AC | 100% | 4ms | 7984KB |
| 17 | AC | 100% | 37ms | 10560KB |
| 18 | AC | 100% | 23ms | 9504KB |
| 19 | AC | 100% | 12ms | 7520KB |
| 20 | AC | 100% | 21ms | 8672KB |
| 21 | AC | 100% | 31ms | 10560KB |
| 22 | AC | 100% | 32ms | 10560KB |
| 23 | AC | 100% | 29ms | 10560KB |
| 24 | AC | 100% | 3ms | 8192KB |
| 25 | AC | 100% | 33ms | 10576KB |
| 26 | AC | 100% | 32ms | 10544KB |
| 27 | AC | 100% | 13ms | 7808KB |
| 28 | AC | 100% | 36ms | 10560KB |
| 29 | AC | 100% | 24ms | 8480KB |
| 30 | AC | 100% | 31ms | 9488KB |
#include<iomanip>
#include<limits>
#include<thread>
#include<utility>
#include<iostream>
#include<string>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<numeric>
#include<cassert>
#include<random>
#include<chrono>
#include<unordered_map>
#include<list>
using namespace std;
typedef unsigned long long int ull;
typedef long long int ll;
typedef pair<ll,ll> pll;
typedef pair<int,int> pi;
typedef pair<double,double> pd;
typedef pair<double,ll> pdl;
#define F first
#define S second
#define MK make_pair
const ll E=1e18+7;
const ll MOD=1000000007;
int main(){
ll n;
cin>>n;
vector<ll> a;
for(int i=0;i<n;i++){
ll b;
cin>>b;
a.push_back(b);
}
sort(a.begin(),a.end());
vector<ll> dp(n,0);
dp[0]=1;
ll ans=1;
for(int i=1;i<n;i++){
if(a[i]==a[i-1]){
ans+=dp[i-1];
dp[i]=dp[i-1];
dp[i]%=MOD;
ans%=MOD;
}
else{
dp[i]=ans;
ans+=ans;
ans%=MOD;
dp[i]%=MOD;
}
}
cout<<ans<<endl;
return 0;
}