Submission #3775611


Source Code Expand

#include "bits/stdc++.h"
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <map>
#include <vector>
#include <math.h>
#include <algorithm>
#include <queue>
#include <set>
#include <tuple>
using namespace std;

#define FOR(i,init,a) for(int i=init; i<a; i++)
#define rep(i,a) FOR(i,0,a)
#define rrep(i,a) for(int i=a; i>=0; i--)
#define rep1(i,a) for(int i=1; i<=a; i++)
#define cout1(a) cout << a << endl;
#define cout2(a,b) cout << a << " " << b << endl;
#define cout3(a,b,c) cout << a << " " << b << " " << c << endl;
#define cout4(a,b,c,d) cout << a << " " << b << " " << c << " " << d << endl;
#define mem(a,n) memset( a, n, sizeof(a))
#define all(a) a.begin(),a.end()
#define chmin(a,b) a=min(a,b);
#define chmax(a,b) a=max(a,b);

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef vector<int> V;
typedef vector<V> VV;
typedef vector<VV> VVV;
const int INF = 1e9;
const int MOD = 1e9+7;
const ll LLINF = 1e18;
static const double pi = 3.141592653589793;

ll fact[200000], invFact[200000]; 

long long power(long long x, long long c) {
    if(c==0) return 1;
    if(c==1) return x;
    if (c%2==1) return (power( (x*x)%MOD, c/2)*x)%MOD;
    else return power( (x*x)%MOD, c/2)%MOD;
}

void make_combT(ll n){
    fact[0]=1;
    rep1(i,n) fact[i]= fact[i-1]*i%MOD;
    
    invFact[n] = power(fact[n],MOD-2);
    rrep(i,n-1) invFact[i] = invFact[i+1] * (i+1) %MOD;
}

ll comb(ll n, ll m){
    if(n<m||n<0||m<0) return 0;
    return (fact[n] * invFact[m] %MOD) * invFact[n-m] %MOD;
}

int N,s,t;
map<int,int> dic;

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    make_combT(100009);
    
    cin>>N;
    rep(i,N){
        int a;cin>>a;
        if(dic.count(a)){
            s=dic[a];
            t=N-i;
        }
        dic[a]=i;
    }
    
    rep1(i,N+1){
        ll tmp=comb(N+1,i);
        if(i-1<=s+t){
            tmp-=comb(s+t,i-1);
            if(tmp<0) tmp+=MOD;
        }
        cout1(tmp)
    }
}

Submission Info

Submission Time
Task D - 11
User mensan_fukuhara
Language C++14 (GCC 5.4.1)
Score 600
Code Size 2065 Byte
Status AC
Exec Time 212 ms
Memory 7424 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 10
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All 1.txt, mx.txt, rnd_0.txt, rnd_1.txt, rnd_2.txt, rnd_3.txt, rnd_4.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
1.txt AC 210 ms 7424 KB
mx.txt AC 212 ms 7424 KB
rnd_0.txt AC 175 ms 6400 KB
rnd_1.txt AC 145 ms 5760 KB
rnd_2.txt AC 42 ms 2944 KB
rnd_3.txt AC 37 ms 2816 KB
rnd_4.txt AC 63 ms 3584 KB
sample1.txt AC 3 ms 1792 KB
sample2.txt AC 3 ms 1792 KB
sample3.txt AC 3 ms 1792 KB