Submission #230683

#TimeUsernameProblemLanguageResultExecution timeMemory
230683monus1042Gondola (IOI14_gondola)C++17
55 / 100
31 ms4752 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; #define ii pair<int, int> #define vi vector<int> #define vii vector<ii> #define eb emplace_back #define all(x) x.begin(), x.end() int valid(int n, int inputSeq[]) { unordered_set<int> ch; for (int i=0; i<n; i++){ ch.insert(inputSeq[i]); } if ((int)ch.size()==n){ int fi=1000000, se=1000000; for (int i=0; i<n; i++){ if (1<=inputSeq[i] && inputSeq[i]<=n && inputSeq[i]<fi){ fi=inputSeq[i]; se=i; } } if (fi==1000000){ return 1; }else{ bool check=1; for (int i=se, track=fi; i<se+n; i++, track++){ if (1<=inputSeq[i%n] && inputSeq[i%n]<=n){ if (inputSeq[i%n] == track){ }else{ check=0; break; } } } if (check) return 1; return 0; } }else{ return 0; } } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { vii delta; int cnt=0; for (int i=0; i<n; i++){ if (1<=gondolaSeq[i] && gondolaSeq[i]<=n){ cnt++; } } if (!cnt){ for (int i=0; i<n; i++){ delta.eb(ii(gondolaSeq[i], i+1)); //del, # } sort(all(delta)); vi ret; int curr=n+1; for (int i=0; i<n; i++){ while(1){ if (curr>delta[i].first) break; ret.eb(delta[i].second); delta[i].second=curr; curr++; } } int si=ret.size(); for (int i=0; i<si; i++){ replacementSeq[i]=ret[i]; } return si; }else if (cnt==n){ return 0; }else{ //cout<<"XD\n"; int mini=1000000, pos=0; for (int i=0; i<n; i++){ if (gondolaSeq[i]<mini){ mini=gondolaSeq[i]; pos=i; } } int diff=mini-1; pos-=diff; pos%=n; pos+=n; pos%=n; //cout<<pos<<endl; vi ret; for (int i=pos, track=1; i<n+pos; i++, ++track){ if (gondolaSeq[i%n]>n) delta.eb(ii(gondolaSeq[i%n], track)); } sort(all(delta)); //cout<<delta[0].second<<endl; int curr=n+1, dels=delta.size(); for (int i=0; i<dels; i++){ while(1){ if (curr>delta[i].first) break; ret.eb(delta[i].second); delta[i].second=curr; curr++; } } int si=ret.size(); for (int i=0; i<si; i++){ replacementSeq[i]=ret[i]; } return si; } } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }
#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...