제출 #159765

#제출 시각아이디문제언어결과실행 시간메모리
159765maximath_1곤돌라 (IOI14_gondola)C++11
55 / 100
99 ms4984 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]){ map<int, bool>mp; for(int i=0; i<n; i++){ if(!mp[inputSeq[i]]) mp[inputSeq[i]]=true; else return 0; } int fi=-1; for(int i=0; i<n; i++){ if(inputSeq[i]<=n){ if(fi==-1) fi=i; else{ int check=i+inputSeq[fi]-fi; check%=n; if(check==0) check=n; if(check!=inputSeq[i]) return 0; } } } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]){ int rotate=0; for(int i=0; i<n; i++){ if(gondolaSeq[i]<=n) rotate=(n+gondolaSeq[i]-i-1)%n; } int now; priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > >pq; for(int i=0; i<n; i++){ now=gondolaSeq[(n+i-rotate)%n]; if(now>n) pq.push({now, i+1}); } int idx=0, cnt=n+1; while(!pq.empty()){ int replacementGondola=pq.top().first; int idxc=pq.top().second; pq.pop(); replacementSeq[idx++]=idxc; for(int i=cnt; i<replacementGondola; i++){ replacementSeq[idx++]=i; } cnt=replacementGondola+1; } return idx; } int countReplacement(int n, int inputSeq[]){ return 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...
#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...