Submission #958291

# Submission time Handle Problem Language Result Execution time Memory
958291 2024-04-05T10:20:07 Z pragmatist Permutation (APIO22_perm) C++17
10 / 100
1000 ms 704 KB
#include "perm.h"
#include<bits/stdc++.h>
 
using namespace std;
 
long long dp[6000];
int a[6000];
int mn;
vector<int> ans;

void go(long long k, int n, int p[]) {
	for(int i = 1; i <= n; ++i) {
		a[i] = p[i-1];
	}
	long long cur = 1;
	for(int i = 1; i <= n; ++i) {
		dp[i] = 1;
		for(int j = 1; j < i; ++j) {
			if(a[j]<a[i]) {
				dp[i] += dp[j];
			}
		}
		cur += dp[i];
	}
	if(cur>k) {
		return;
	}
	int old = n;
	while(cur<k) {
		vector<pair<int, long long> > b;
		for(int i = 1; i <= n; ++i) {
			b.push_back({a[i], dp[i]});
		}
		sort(b.begin(), b.end());
		long long add = 1, need = k-cur;
		int nxt = 0;
		for(auto [x, y] : b) {
			if(add+y<=need) {
				nxt = x+1;
				add += y;								
			} else {
				break;
			}
		}
		for(int i = 0; i <= n; ++i) {
			if(a[i] >= nxt) {
				a[i]++;
			}
		}			
		a[++n] = nxt;
		dp[n] = add;
		cur += add;
	}
	assert(n<=200);
	vector<int> res;
	for(int i = 1; i <= n; ++i) {
		res.push_back(a[i]);
	}
	if(n<mn) {
		mn = n;
		ans = res;
	}
}

std::vector<int> construct_permutation(long long k) {
	mn = 1e9;
	int p[6];
	for(int n = 1; n <= 5; ++n) {
		for(int i = 0; i < n; ++i) {
			p[i] = i;
		} 
		do {
			go(k, n, p);	
		} while(next_permutation(p, p+n));
	}                
    return ans;
}

Compilation message

perm.cpp: In function 'void go(long long int, int, int*)':
perm.cpp:28:6: warning: unused variable 'old' [-Wunused-variable]
   28 |  int old = n;
      |      ^~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 9 ms 452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 9 ms 452 KB Output is correct
3 Correct 77 ms 348 KB Output is correct
4 Correct 122 ms 604 KB Output is correct
5 Correct 503 ms 444 KB Output is correct
6 Correct 488 ms 604 KB Output is correct
7 Correct 781 ms 704 KB Output is correct
8 Execution timed out 1096 ms 448 KB Time limit exceeded
9 Halted 0 ms 0 KB -