| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1317463 | neonglitch | Permutation Recovery (info1cup17_permutation) | C++20 | 0 ms | 0 KiB |
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define int long double
main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
// int p[n+1]={0};
// for(int i=1;i<=n;i++)p[i]=i;
// do{
int q[n+1]={0};
int ans[n+1]={0};
int val[n+1]={0};
// q[1]=1;
// for(int i=2;i<=n;i++)
// {
// q[i]=1+q[i-1];
// for(int j=1;j<i;j++)
// {
// if(p[j]<p[i])
// {
// q[i]+=(q[j]-q[j-1]);
// }
// }
// }
for(int i=1;i<=n;i++){
string s;
cin>>s;
for(int j=0;j<s.size();j++)
{
q[i]=(q[i]*10+(s[j]-'0'));
}
}
// for(int i=1;i<=n;i++)cout<<q[i]<<' ';;
// cout<<endl;
for(int j=n;j>=1;j--)
{
int mx=-1;
int sm=0,st=0;
for(int i=1;i<=n;i++)
{
if(!val[i])
{
if((q[i-1]*2+1-sm)==q[i])
{
mx=i;
st=sm;
}
}
else{
sm+=val[i];
}
}
val[mx]=q[mx]-q[mx-1];
ans[mx]=j;
}
// bool fl=0;
// for(int i=1;i<=n;i++)
// {
// if(ans[i]!=p[i])
// {
// cout<<"fudge"<<endl;
// fl=1;
// break;
// }
// }
// if(fl)
// {
for(int i=1;i<=n;i++)cout<<ans[i]<<' ';
cout<<endl;
// for(int i=1;i<=n;i++)cout<<p[i]<<' ';
// cout<<endl;
// break;
// }
// }while(next_permutation(p+1,p+1+n));
}
