結果
問題 | No.695 square1001 and Permutation 4 |
ユーザー | eQe |
提出日時 | 2024-10-10 02:32:39 |
言語 | C++23 (gcc 12.3.0 + boost 1.83.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 3,878 bytes |
コンパイル時間 | 5,755 ms |
コンパイル使用メモリ | 313,776 KB |
実行使用メモリ | 159,532 KB |
最終ジャッジ日時 | 2024-10-10 02:32:47 |
合計ジャッジ時間 | 7,619 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,820 KB |
testcase_01 | AC | 11 ms
11,096 KB |
testcase_02 | AC | 25 ms
42,172 KB |
testcase_03 | AC | 23 ms
42,108 KB |
testcase_04 | AC | 47 ms
42,308 KB |
testcase_05 | AC | 45 ms
42,240 KB |
testcase_06 | MLE | - |
testcase_07 | MLE | - |
testcase_08 | MLE | - |
testcase_09 | MLE | - |
testcase_10 | AC | 20 ms
18,944 KB |
testcase_11 | MLE | - |
testcase_12 | MLE | - |
testcase_13 | MLE | - |
ソースコード
#include<bits/stdc++.h> #include<atcoder/all> namespace my{ void main(); void solve(); } int main(){my::main();} namespace my{ #define eb emplace_back #define LL(...) ll __VA_ARGS__;lin(__VA_ARGS__) #define VL(n,...) vec<ll>__VA_ARGS__;setsize({n},__VA_ARGS__);lin(__VA_ARGS__) #define FO(n) for(ll ij=0;ij<n;++ij) #define FOR(i,...) for(auto[i,i##stop,i##step]=range(0,__VA_ARGS__);i<i##stop;i+=i##step) #define fo(i,...) FO##__VA_OPT__(R)(i __VA_OPT__(,__VA_ARGS__)) #define fe(a,i,...) for(auto&&__VA_OPT__([)i __VA_OPT__(,__VA_ARGS__]):a) using namespace std; using ll=int64_t; using ull=uint64_t; auto range(bool s,ll a,ll b=1e18,ll c=1){if(b==1e18)b=a,(s?b:a)=0;return array{a-s,b,c};} constexpr char nl=10; constexpr char sp=32; template<class V>concept vectorial=is_base_of_v<vector<typename V::value_type>,V>; template<class T>struct core_type{using type=T;}; template<vectorial V>struct core_type<V>{using type=typename core_type<typename V::value_type>::type;}; template<class V>istream&operator>>(istream&i,vector<V>&v){fe(v,e)i>>e;return i;} template<class V>ostream&operator<<(ostream&o,const vector<V>&v){fe(v,e)o<<e<<string(&e!=&v.back(),vectorial<V>?nl:sp);return o;} template<class V>struct vec:vector<V>{ using vector<V>::vector; vec(const vector<V>&v){this->reserve(v.size());fe(v,e)this->eb(e);} vec&operator+=(const vec&u){vec&v=*this;fo(i,v.size())v[i]+=u[i];return v;} vec&operator-=(const vec&u){vec&v=*this;fo(i,v.size())v[i]-=u[i];return v;} vec&operator^=(const vec&u){this->insert(this->end(),u.begin(),u.end());return*this;} vec operator+(const vec&u)const{return vec{*this}+=u;} vec operator-(const vec&u)const{return vec{*this}-=u;} vec operator^(const vec&u)const{return vec{*this}^=u;} vec&operator++(){fe(*this,e)++e;return*this;} vec&operator--(){fe(*this,e)--e;return*this;} vec operator-()const{vec v=*this;fe(v,e)e=-e;return v;} }; template<class T=ll,size_t n,size_t i=0>auto make_vec(const ll(&s)[n],T x={}){if constexpr(n==i+1)return vec<T>(s[i],x);else{auto X=make_vec<T,n,i+1>(s,x);return vec<decltype(X)>(s[i],X);}} template<ll n,class...A>void setsize(const ll(&l)[n],A&...a){((a= make_vec(l,typename core_type<A>::type())),...);} void io(){cin.tie(nullptr)->sync_with_stdio(0);cout<<fixed<<setprecision(15);} void lin(auto&...a){(cin>>...>>a);} template<char c=sp>void pp(const auto&...a){ll n=sizeof...(a);((cout<<a<<string(--n>0,c)),...);cout<<nl;} struct modll{ static inline ll N=998244353; ll a; static void set_mod(ll N){modll::N=N;} static ll mod(){return N;} modll()=default; modll(ll a):a((a%=N)<0?a+N:a){} auto&operator+=(const modll&b){if(ull(a+=b.a)>=N)a-=N;return*this;} auto&operator-=(const modll&b){if(ull(a+=N-b.a)>=N)a-=N;return*this;} auto&operator*=(const modll&b){(a*=b.a)%=N;return*this;} auto&operator/=(const modll&b){return*this*=b.inv();} friend auto operator+(const modll&a,const modll&b){return modll{a}+=b;} friend auto operator-(const modll&a,const modll&b){return modll{a}-=b;} friend auto operator*(const modll&a,const modll&b){return modll{a}*=b;} friend auto operator/(const modll&a,const modll&b){return modll{a}/=b;} friend bool operator==(const modll&a,const modll&b){return a.a==b.a;} auto operator-()const{return N-a;} modll inv()const{ assert(gcd(a,N)==1); ll a=this->a,b=N,u=1,v=0; while(b)swap(u-=a/b*v,v),swap(a-=a/b*b,b); return u; } ll val()const{return a;} friend istream&operator>>(istream&i,modll&b){ull t;i>>t;b=t;return i;} friend ostream&operator<<(ostream&o,const modll&b){return o<<b.val();} }; template<class T>T mod(T a,T m){return(a%=m)<0?a+m:a;} void main(){io();ll T=1;fo(T)solve();} void solve(){ LL(N,K); VL(K,a); ll mod=100000000000000007LL; modll::set_mod(mod); vec<modll>dp(N); dp[0]=1; fo(i,N){ fo(j,K)if(i+a[j]<N)dp[i+a[j]]+=dp[i]; } pp(dp[N-1]); }}