#include<bits/stdc++.h>
//#include "grader.cpp"
using namespace std;
const int N = 100 + 5, mod = 1e9 + 7;
int a, b, c, m;
int dp[N][N][N];
long long solve(int x, int y, int z, bool start){
if (x > a || y > b || z > c)
return 0;
if (x == a && y == b && z == c)
return 1;
if (~dp[x][y][z])
return dp[x][y][z];
int n_x, n_y, n_z;
if (start)
n_x = n_y = n_z;
else
n_x = n_y = n_z = max(max(x, y), z);
return dp[x][y][z] = (solve(x + 1, y, z, 0)
+ solve(x, y + 1, z, 0)
+ solve(x, y, z + 1, 0)) % mod;
}
int valid(int n, int inputSeq[]){
int mn = 1e9;
int idx = -1;
map < int, int > mp;
for(int i = 0 ; i < n ; i++){
mp[inputSeq[i]]++;
if (inputSeq[i] < mn){
mn = inputSeq[i], idx = i;
}
}
for(auto it :mp){
if (it.second > 1)
return 0;
}
int intended = mn;
for(int i = 0 ; i < n ; i++){
int cur = inputSeq[(i + idx) % n];
if (cur != intended){
if (cur < n)
return 0;
}
intended++;
if (intended > n)
intended -= n;
}
return 1;
}
int replacement(int n, int gondolaSeq[], int replacementSeq[]){
int mn = 1e9;
int idx = -1;
map < int, int > mp;
for(int i = 0 ; i < n ; i++){
if (gondolaSeq[i] < mn){
mn = gondolaSeq[i], idx = i;
}
}
int intended = mn;
for(int i = 0 ; i < n ; i++){
int cur = gondolaSeq[(i + idx) % n];
if (cur != intended){
mp[intended] = cur;
}
intended++;
if (intended > n)
intended -= n;
}
int l = mp.size();
int j = 0;
for(auto it : mp){
replacementSeq[j++] = it.first;
}
return l;
}
int countReplacement(int n, int inputSeq[]){
memset(dp, -1, sizeof dp);
int mn = 1e9;
int idx = -1;
for(int i = 0 ; i < n ; i++){
if (inputSeq[i] < mn){
mn = inputSeq[i], idx = i;
}
}
int intended = mn;
vector < pair < int, int > > v;
for(int i = 0 ; i < n ; i++){
int cur = inputSeq[(i + idx) % n];
if (cur != intended){
v.push_back({cur, intended});
}
intended++;
if (intended > n)
intended -= n;
}
m = n;
int x, y, z;
x = y = z = 0;
if (v.size()){
x = v[0].second;
a = v[0].first;
}
if (v.size() > 1){
y = v[1].second;
b = v[1].first;
}
if (v.size() > 2){
z = v[2].second;
c = v[2].first;
}
return solve(x, y, z, 1);
}
Compilation message
gondola.cpp: In function 'long long int solve(int, int, int, bool)':
gondola.cpp:14:7: warning: variable 'n_x' set but not used [-Wunused-but-set-variable]
int n_x, n_y, n_z;
^~~
/tmp/ccxN3wGV.o: In function `main':
grader.cpp:(.text.startup+0xc3): undefined reference to `countReplacement'
grader.cpp:(.text.startup+0xe2): undefined reference to `valid'
grader.cpp:(.text.startup+0x106): undefined reference to `replacement'
collect2: error: ld returned 1 exit status