| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1360682 | lizi14 | Gondola (IOI14_gondola) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
#include "gondola.h"
// int inputSeq[10000];
// int replacementSeq[10000];
// int gondolaSeq[10000];
int valid(int n, int inputSeq[]){
vector<pair<int,int>>v;
set<int>s;
for(int i=0; i<n; i++){
if(inputSeq[i]<=n)v.push_back({inputSeq[i],i});
if(s.find(inputSeq[i])!=s.end()){
return false;
}
s.insert(inputSeq[i]);
}
int medzineba=-1;
for(int i=0; i<n; i++){
if(inputSeq[i]<=n){
medzineba=i;
break;
}
}
if(medzineba==-1)return 1;
int k=inputSeq[medzineba];
for(int i=0; i<n; i++){
int drnachvi=(medzineba+i)%n;
if(inputSeq[drnachvi]<=n){
if(inputSeq[drnachvi]!=k)return 0;
}
k++;
if(k>n)k=1;
}
// for(int i=1; i<v.size(); i++){
// //if(v[i-1]==1)continue;
// if(v[i].first==1){
// continue;
// }
// if(v[i].first-v[i-1].first==v[i].second-v[i-1].second)continue;
// return false;
// }
//cout<<"NEKO"<<endl;
return true;
}
int replacement(int n, int gondolaSeq[], int replacementSeq[]){
// for(int i=0; i<n; i++){
// cout<<gondolaSeq[i]<<" ";
// }
if(valid(n,gondolaSeq)==false){
cout<<"NYAN"<<endl;
return 0;
}
else{
vector<int>v(n,0);
//int m=0;
for(int i=0; i<n; i++){
if(gondolaSeq[i]<=n){
v[i]=gondolaSeq[i];
//m=1;
}
}
for(int i=0; i<n; i++){
if(v[i]!=0){
int l=v[i]+1;
for(int j=i+1; j<n; j++){
if(l==n+1)l=1;
v[j]=l;
l++;
}
break;
}
}
// for(int i=0; i<n; i++){
// cout<<v[i]<<" ";
// }
int l=v[n-1];
l--;
for(int i=n-2; i>=0; i--){
if(l==0)l=n;
v[i]=l;
l--;
}
// for(int i=0; i<n; i++){
// cout<<v[i]<<" ";
// }
// cout<<endl;
vector<int>bati;
//map<int,int>mp;
vector<pair<int,int>>ixvi;
for(int i=0; i<n; i++){
//mp[gondolaSeq[i]]++;
if(gondolaSeq[i]>n ){
ixvi.push_back({gondolaSeq[i]-1,v[i]});
}
}
sort(ixvi.begin(),ixvi.end());
int y=n+1;
for(int i=0; i<ixvi.size(); i++){
bati.push_back(ixvi[i].second);
for(int j=y; j<=ixvi[i].first; j++){
bati.push_back(j);
}
y=ixvi[i].first+1;
}
int k=0;
for(auto a:bati){
//cout<<a<<" ";
replacementSeq[k]=a;
k++;
}
return bati.size();
}
//return 0;
}