Submission #136053

#TimeUsernameProblemLanguageResultExecution timeMemory
136053arthurconmyGondola (IOI14_gondola)C++14
60 / 100
25 ms2404 KiB
#include <bits/stdc++.h> #ifndef ARTHUR_LOCAL #include "gondola.h" #endif using namespace std; bool used[250001]; int valid(int n, int S[]) { pair<int,int> minn = {int(1e9),int(1e9)}; for(int i=0; i<n; i++) { if(used[S[i]]) return 0; used[S[i]]=1; minn = min(minn, make_pair(S[i],i)); } int cur = minn.first; if(cur>n) return 1; int one_pos = (minn.second - minn.first + 1 + n)%n; for(int j=0; j<n; j++) { if(S[(one_pos+j)%n] == j+1 || S[(one_pos+j)%n]>n) continue; return 0; } return 1; } int replacement(int n, int G[], int R[]) { pair<int,int> minn = {int(1e9),int(1e9)}; for(int i=0; i<n; i++) { minn = min(minn, make_pair(G[i],i)); } int cur = minn.first; int one_pos = (minn.second - minn.first + 1 + n)%n; if(cur>n) one_pos=0; vector<pair<int,int>> reps; for(int j=0; j<n; j++) { if(G[(one_pos+j)%n] == j+1) continue; reps.push_back(make_pair(G[(one_pos+j)%n],j+1)); } sort(reps.begin(),reps.end()); int ans=0; int next_boat=n+1; for(auto rep:reps) { int cur = rep.second; for(int i=next_boat; i<=rep.first; i++) { // cout << cur << endl; R[ans] = cur; cur=next_boat; ans++; next_boat++; } } // cout << endl; return ans; } int countReplacement(int n, int I[]) { return 1; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...