Submission #522769

#TimeUsernameProblemLanguageResultExecution timeMemory
522769Theo830Permutation Recovery (info1cup17_permutation)C++17
25 / 100
1 ms460 KiB
#include <bits/stdc++.h> using namespace std; typedef unsigned long long ll; const ll INF = 1e9+7; const ll MOD = 998244353; typedef pair<ll,ll> ii; #define iii pair<ll,ii> #define f(i,a,b) for(ll i = a;i < b;i++) #define pb push_back #define vll vector<ll> #define F first #define S second #define all(x) (x).begin(), (x).end() ///I hope I will get uprating and don't make mistakes ///I will never stop programming ///sqrt(-1) Love C++ ///Please don't hack me ///@TheofanisOrfanou Theo830 ///Think different approaches (bs,dp,greedy,graphs,shortest paths,mst) ///Stay Calm ///Look for special cases ///Beware of overflow and array bounds ///Think the problem backwards ///Training int main(void){ ios_base::sync_with_stdio(0); cin.tie(0); ll n; cin>>n; ll A[n]; vll arr; f(i,0,n){ cin>>A[i]; } arr.pb(A[0]); vll pos; pos.pb(0); ll sum = A[n - 1]; f(i,1,n){ arr.pb(A[i] - A[i-1]); pos.pb(i); } ll N = n; ll ans[n]; while(n){ ll sumi = sum; for(ll j = n-1;j >= 0;j--){ sumi -= arr[j]; if((sumi + 1) == arr[j]){ sum -= arr[j]; ans[pos[j]] = n; arr.erase(arr.begin() + j); pos.erase(pos.begin() + j); break; } } n--; } f(i,0,N){ cout<<ans[i]<<" "; } cout<<"\n"; }
#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...