Submission #734690

#TimeUsernameProblemLanguageResultExecution timeMemory
734690grossly_overconfidentFestivals in JOI Kingdom 2 (JOI23_festival2)C++17
10 / 100
9003 ms320 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' //#define int long long int answer = 0; int n, p; int findfront(vector<bool> v, int s){ for (int i = s + 1; i < v.size(); ++i){ if (!v[i]){ return i; } } return -1; } int bsearch(vector<int>& a, int i){ int lo = 0, hi = a.size() - 1; while(lo != hi){ int mid = (lo + hi) / 2; if (a[mid] >= i){ hi = mid; } else{ lo = mid + 1; } } if (a[lo] == i){ return lo; } return -1; } int greedysol(vector<int>& a, vector<int>& b, int i){ if (i == b.size() * 2){ return 0; } int j = bsearch(a, i); if (j == -1){ return greedysol(a, b, i + 1); } return greedysol(a, b, b[j]) + 1; } int dpsol(vector<int>& a, vector<int>& b, int i, vector<int>& dp){ if (i == b.size() * 2){ return 0; } if (dp[i] != -1){ return dp[i]; } int j = bsearch(a, i); if (j == -1){ return dp[i] = dpsol(a, b, i + 1, dp); } return dp[i] = max(dpsol(a, b, b[j], dp) + 1, dpsol(a, b, i + 1, dp)); } void create(vector<int> a, vector<int> b, vector<bool> visited, int t, int f){ if (t == n){ vector<int> dp(n * 2, -1); if (dpsol(a, b, 0, dp) != greedysol(a, b, 0)){ answer++; answer %= p; } return; } a[t] = f; visited[f] = true; for (int i = f + 1; i < n * 2; ++i){ if (!visited[i]){ b[t] = i; visited[i] = true; create(a, b, visited, t + 1, findfront(visited, f)); visited[i] = false; } } } signed main(){ cin.tie(0); iostream::sync_with_stdio(0); cin >> n >> p; vector<int> a(n), b(n); vector<bool> v(2 * n, false); create(a, b, v, 0, 0); cout << answer; return 0; }

Compilation message (stderr)

festival2.cpp: In function 'int findfront(std::vector<bool>, int)':
festival2.cpp:9:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for (int i = s + 1; i < v.size(); ++i){
      |                         ~~^~~~~~~~~~
festival2.cpp: In function 'int greedysol(std::vector<int>&, std::vector<int>&, int)':
festival2.cpp:35:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |     if (i == b.size() * 2){
      |         ~~^~~~~~~~~~~~~~~
festival2.cpp: In function 'int dpsol(std::vector<int>&, std::vector<int>&, int, std::vector<int>&)':
festival2.cpp:46:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |     if (i == b.size() * 2){
      |         ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...