Submission #39957

#TimeUsernameProblemLanguageResultExecution timeMemory
39957funcsrSpace Pirate (JOI14_space_pirate)C++14
10 / 100
2000 ms61784 KiB
#include <iostream>
#include <queue>
#include <cassert>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<int, int> P;
#define rep(i, n) for (int i=0; i<(n); i++)
#define all(x) x.begin(), x.end()
#define uniq(x) x.erase(unique(all(x)), x.end())
#define index(x, y) (int)(lower_bound(all(x), y) - x.begin())
#define pb push_back
#define _1 first
#define _2 second
#define INF 1145141919

int N;
long long K;
int A[100000];
int F[60][100000];
long long C[100000];
int dist[3000][3000];
inline int f(int x, long long k) {
  for (int i=59; i>=0; i--) if ((k>>i)&1) x = F[i][x];
  return x;
}

int main() {
  cin >> N >> K;
  if (N > 3000) abort();
  rep(i, N) cin >> A[i], A[i]--;
  int def_dst = f(0, K);
  rep(a, N) {
    rep(b, N) {
      int orig = A[a];
      A[a] = b;
      rep(i, N) F[0][i] = A[i];
      rep(i, 59) rep(j, N) F[i+1][j] = F[i][F[i][j]];
      rep(i, N) {
        rep(j, N) dist[i][j] = INF;
        int x = i;
        rep(_, N) {
          dist[i][x] = min(dist[i][x], _);
          x = A[x];
        }
      }
      C[f(0, K)]++;
      A[a] = orig;
    }
  }
  rep(i, N) cout << C[i] << "\n";
  return 0;
}

Compilation message (stderr)

space_pirate.cpp: In function 'int main()':
space_pirate.cpp:33:7: warning: unused variable 'def_dst' [-Wunused-variable]
   int def_dst = f(0, K);
       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...