General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
188271462 Practice:
DaiRuiChen007
1553E - 14 C++14 (GCC 6-32) Accepted 358 ms 11056 KB 2023-01-07 05:56:37 2023-01-07 05:56:37
→ Source
// LUOGU_RID: 98890409
#include<bits/stdc++.h> 
using namespace std;
const int MAXN=3e5+1;
int n,m,a[MAXN],cnt[MAXN];
bool vis[MAXN];
vector <int> G[MAXN];
inline void dfs(int p) {
	vis[p]=true;
	for(int v:G[p]) if(!vis[v]) dfs(v);
}
inline bool check(int k) {
	for(int i=1;i<=n;++i) G[i].clear(),vis[i]=false;
	for(int i=1;i<=n;++i) {
		G[(i+n-k)%n==0?n:(i+n-k)%n].push_back(a[i]);
	}
	int cnt=0;
	for(int i=1;i<=n;++i) {
		if(!vis[i]) ++cnt,dfs(i);
	}
	return (n-cnt)<=m;
}
inline void solve() {
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i) {
		scanf("%d",&a[i]);
		++cnt[(i+n-a[i])%n];
	}
	vector <int> ans;
	for(int i=0;i<n;++i) {
		if(cnt[i]>=n-2*m&&check(i)) ans.push_back(i);
	}
	printf("%d ",(int)ans.size());
	for(int i:ans) printf("%d ",i);
	puts("");
} 
signed main() {
	int T;
	scanf("%d",&T) ;
	while(T--) solve();
	return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details