Submission #936762

#TimeUsernameProblemLanguageResultExecution timeMemory
936762antonGroup Photo (JOI21_ho_t3)C++17
44 / 100
5002 ms708 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> vector<int> v; vector<int> link; void swap_pos(int lh, int rh){ int vlh = v[lh]; int vrh = v[rh]; link[vlh] = rh; link[vrh] = lh; swap(v[lh], v[rh]); } int move(int id, int pos){ //cout<<"move "<<id<<" "<<pos<<endl; int cpos= link[id]; int res = 0; if(cpos!=pos){ for(; cpos<pos; cpos++){ swap_pos(cpos,cpos+1); res++; } for(; pos<cpos; cpos--){ swap_pos(cpos, cpos-1); res++; } } return res; } map<pii, int> store; int dp(int val, int end){ if(store.find({val, end})!= store.end()){ return store[{val, end}]; } else{ int res = 0; if(val==0|| end == -1){ res= 0; } else{ res= 1e18; for(int i = 0; i<val; i++){ //cout<<"i is "<<i<<endl; int c= 0; vector<int> begins; /*for(auto e: v){ cout<<e<<" "; } cout<<endl;*/ for(int j = val-i; j<=val; j++){ begins.push_back(link[j]); c+=move(j, end+val-i-j); } //cout<<val<<"cur c is "<<c<<endl; res=min(dp(val-i-1, end-i-1)+c, res); for(int j = val; j>=val-i; j--){ move(j, begins.back()); begins.pop_back(); } /*for(auto e: v){ cout<<e<<" "; } cout<<endl;*/ } } //cout<<val<<" "<<end<<" "<<res<<endl; store[{val, end}] = res; return res; } } signed main(){ int n; cin>>n; v.resize(n); link.resize(n+1); int res= 0; for(int i = 0; i<n; i++){ cin>>v[i]; link[v[i]] = i; } cout<<dp(n,n-1)<<endl; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:84:9: warning: unused variable 'res' [-Wunused-variable]
   84 |     int res= 0;
      |         ^~~
#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...