秋祭 | 静岡高校工学部



卬高杯


提出詳細

提出id提出時刻ユーザー名問題言語判定状況判定実行時間
1148432023-10-24 08:50:25TKTYIIcpp25/25AC381

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef vector<vvvi> vvvvi;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<vvb> vvvb;
typedef vector<vvvb> vvvvb;
typedef pair<ll,ll> pi;
typedef pair<ll,pi> ppi;
typedef pair<ll,ppi> pppi;
typedef pair<ll,pppi> ppppi;
#define FOR(i,l,r) for(ll i=l;i<r;i++)
#define REP(i,n) FOR(i,0,n)
#define RFOR(i,l,r) for(ll i=r-1;i>=l;i--)
#define RREP(i,n) RFOR(i,0,n)
#define ALL(x) x.begin(),x.end()
#define F first
#define S second
#define BS(A,x) binary_search(ALL(A),x)
#define LB(A,x) (ll)(lower_bound(ALL(A),x)-A.begin())
#define UB(A,x) (ll)(upper_bound(ALL(A),x)-A.begin())
#define COU(A,x) (UB(A,x)-LB(A,x))
#define sz(c) ((ll)(c).size())
/*
#include<boost/multiprecision/cpp_int.hpp>
namespace mp=boost::multiprecision;
using Bint=mp::cpp_int;
*/
template<typename T>using min_priority_queue=priority_queue<T,vector<T>,greater<T>>;
template<typename T1,typename T2>ostream&operator<<(ostream&os,pair<T1,T2>&p){os<<p.F<<" "<<p.S;return os;}
template<typename T1,typename T2>istream&operator>>(istream&is,pair<T1,T2>&p){is>>p.F>>p.S;return is;}
template<typename T>ostream&operator<<(ostream&os,vector<T>&v){REP(i,sz(v))os<<v[i]<<(i+1!=sz(v)?" ":"");return os;}
template<typename T>istream&operator>>(istream&is,vector<T>&v){for(T&in:v)is>>in;return is;}
template<class T>bool chmax(T&a,T b){if(a<b){a=b;return 1;}return 0;}
template<class T>bool chmin(T&a,T b){if(b<a){a=b;return 1;}return 0;}
ld dist(ld x1,ld y1,ld x2,ld y2){return sqrtl((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
//const ll mod=998244353;
const ld EPS=1e-8;
/*
const ll mod=1000000007;
//*/
const ll mod=127237991;
int main(){
  ll N;cin>>N;
  vvi A(5,vi(N));cin>>A;
  REP(i,5)sort(ALL(A[i]));
  vvi DP(5,vi(N));
  REP(i,N)DP[0][i]=1;
  FOR(i,1,5){
    vi B(N+1);
    REP(j,N)B[j+1]=(B[j]+DP[i-1][j])%mod;
    REP(j,N)DP[i][j]=B[LB(A[i-1],A[i][j])];
  }
  ll ans=0;
  REP(i,N)ans=(ans+DP[4][i])%mod;
  cout<<ans<<endl;
  return 0;
}

sample1.txt AC 2
sample2.txt AC 2
sample3.txt AC 3
sample4.txt AC 7
sample5.txt AC 7
case1.txt AC 7
case2.txt AC 7
case3.txt AC 7
case4.txt AC 7
case5.txt AC 7
case6.txt AC 193
case7.txt AC 143
case8.txt AC 173
case9.txt AC 78
case10.txt AC 70
case11.txt AC 308
case12.txt AC 380
case13.txt AC 273
case14.txt AC 346
case15.txt AC 308
case16.txt AC 210
case17.txt AC 381
case18.txt AC 207
case19.txt AC 336
case20.txt AC 205
381 AC381 AC