Submission #1295094

#TimeUsernameProblemLanguageResultExecution timeMemory
1295094faricaThe Collection Game (BOI21_swaps)C++20
15 / 100
67 ms6304 KiB
#include <bits/stdc++.h>
#include "swaps.h"

using namespace std;
using vi = vector<int>;
using pi = pair<int,int>;

int n;

int inc(int a, int b) { 
	if(a+b == n) return n;
	return (a+b)%n; 
}

void solve(int N, int V) {
    n = N;
    vi cnt(n+1, 0);
    set<pi>st;
    for(int i=1; i<N; ++i) {
		vector<bool>vis(N+1, 0);
		vector<pi>tmp;
		for(int j=1; j<=N; ++j) {
			int nw = inc(j,i);
			if(vis[j] or vis[inc(j,i)] or st.find({min(j,nw), max(j,nw)}) != st.end()) continue;
			schedule(j, inc(j,i));
			vis[j] = vis[inc(j,i)] = 1;
			tmp.push_back({j, nw});
			st.insert({min(j,nw), max(j,nw)});
		}
		vi ans = visit();
		for(int j=0; j<ans.size(); ++j) {
			if(!ans[j]) ++cnt[tmp[j].first];
			else ++cnt[tmp[j].second];
		}
		tmp.clear();
		vis.assign(N+1, 0);
		for(int j=i+1; j<=N; ++j) {
			int nw = inc(j,i);
			if(vis[j] or vis[inc(j,i)] or st.find({min(j,nw), max(j,nw)}) != st.end()) continue;
			schedule(j, inc(j,i));
			vis[j] = vis[inc(j,i)] = 1;
			tmp.push_back({j, nw});
			st.insert({min(j,nw), max(j,nw)});
		}
		for(int j=1; j<=i; ++j) {
			int nw = inc(j,i);
			if(vis[j] or vis[inc(j,i)] or st.find({min(j,nw), max(j,nw)}) != st.end()) continue;
			schedule(j, inc(j,i));
			vis[j] = vis[inc(j,i)] = 1;
			tmp.push_back({j, nw});
			st.insert({min(j,nw), max(j,nw)});
		}
		vi ans2 = visit();
		for(int j=0; j<ans2.size(); ++j) {
			if(!ans2[j]) ++cnt[tmp[j].first];
			else ++cnt[tmp[j].second];
		}
	}
	vi ans(n, 0);
	for(int i=1; i<=n; ++i) {
		ans[cnt[i]] = i;
	}
	answer(ans);
}
#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...
#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...