QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#457612 | #8838. Jesse's Job | ucup-team266# | WA | 1ms | 5676kb | C++23 | 1.5kb | 2024-06-29 13:25:46 | 2024-06-29 13:25:47 |
Judging History
answer
/*
Things to notice:
1. do not calculate useless values
2. do not use similar names
Things to check:
1. submit the correct file
2. time (it is log^2 or log)
3. memory
4. prove your naive thoughts
5. long long
6. corner case like n=0,1,inf or n=m
7. check if there is a mistake in the ds or other tools you use
8. fileio in some oi-contest
9. module on time
10. the number of a same divisor in a math problem
11. multi-information and queries for dp and ds problems
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
const int mod=998244353;
const int inf=0x3f3f3f3f;
int n,p[1000005],vis[1000005];
void solve()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>p[i],vis[i]=0;
vector <int> vec;
int u=1;
while(1)
{
vec.pb(u),vis[u]=1;
u=p[u];
if(vis[u]) break;
}
if(vec.size()<n)
{
cout<<n<<"\n"<<vec.size()<<"\n";
sort(vec.begin(),vec.end());
for(int i=0;i<vec.size();i++) cout<<vec[i]<<" ";
cout<<"\n";
return;
}
for(int i=1;i<=n;i++) vis[i]=0;
vec.clear();
swap(p[1],p[2]);
u=1;
while(1)
{
vec.pb(u),vis[u]=1;
u=p[u];
if(vis[u]) break;
}
assert(vec.size()<n);
cout<<n-2<<"\n"<<vec.size()<<"\n";
sort(vec.begin(),vec.end());
for(int i=0;i<vec.size();i++) cout<<vec[i]<<" ";
cout<<"\n";
return;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int _=1;
cin>>_;
while(_--) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 5676kb
input:
3 2 2 1 4 2 1 4 3 6 3 5 4 2 6 1
output:
0 1 1 4 2 1 2 4 3 1 5 6
result:
wrong answer Participant didn't find permutation (test case 3)