(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #257230

#TimeUsernameProblemLanguageResultExecution timeMemory
257230NaimSSKangaroo (CEOI16_kangaroo)C++14
100 / 100
60 ms32384 KiB
#include <bits/stdc++.h> #define ld long double #define endl "\n" #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define pb(x) push_back(x) #define mp(a,b) make_pair(a,b) #define ms(v,x) memset(v,x,sizeof(v)) #define all(v) v.begin(),v.end() #define ff first #define ss second #define rep(i, a, b) for(int i = a; i < (b); ++i) #define per(i, a, b) for(int i = b-1; i>=a ; i--) #define trav(a, x) for(auto& a : x) #define allin(a , x) for(auto a : x) #define td(v) v.begin(),v.end() #define sz(v) (int)v.size() //#define int long long using namespace std; typedef vector<int> vi; #define y1 abacaba #define left sefude #define db(x) cerr << #x <<" == "<<x << endl; #define db2(x,y) cerr<<#x <<" == "<<x<<", "<<#y<<" == "<<y<<endl; typedef long long ll; typedef pair<int,int> pii; inline ll mod(ll n, ll m ){ ll ret = n%m; if(ret < 0) ret += m; return ret; } ll gcd(ll a, ll b){return (b == 0LL ? a : gcd(b, a%b));} ll exp(ll a,ll b,ll m){ if(b==0LL) return 1LL; if(b==1LL) return mod(a,m); ll k = mod(exp(a,b/2,m),m); if(b&1LL){ return mod(a*mod(k*k,m),m); } else return mod(k*k,m); } int n; const int N = 2020; const int M = 1e9 + 7; ll dp[N][N]; int cs,cf; ll C(int j){ return (1ll*j*(j-1)/2)%M; } ll solve(int i,int j){// to em i em tem j componentes if(j < 0)return 0; ll &x = dp[i][j]; if(x!=-1)return x; x = 0; int bad = (i>=cs) + (i>=cf); if(i == n + 1){ return x = (j == 1); } if(i == cs || i == cf){ return x = (solve(i+1,j) + solve(i+1,j+1))%M; } // tem j+1 gaps pra criar um cara, mas n pode usar o start/end x = (x + 1ll*solve(i+1,j+1)*(j + 1 - bad))%M; // pode juntar o (1,2) ou (2,3) ... (j-1,j) x = (x + solve(i+1,j-1)*(j-1)); return mod(x,M); } int32_t main(){ fastio; cin >> n; cin >> cs >> cf; ms(dp,-1); cout << solve(2,1) << endl; // math -> gcd it all // Did u check N=1? Did you switch N,M? }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...