Submission #434684

#TimeUsernameProblemLanguageResultExecution timeMemory
434684SupersonicGondola (IOI14_gondola)C++14
55 / 100
25 ms2252 KiB
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
int n;bool u[250001];
int o(int a,int b){return (a+b)<=n?(a+b):(a+b)-n;}
int valid(int an, int inputSeq[]){
  n=an;int g=-1;
  for(int i=0;i<n;i++){if(inputSeq[i]<=n)g=i;if(u[inputSeq[i]])return 0;u[inputSeq[i]]=1;}
  if(g==-1)return 1;
  for(int i=g;i<n;i++)if(inputSeq[i]<=n&&inputSeq[i]!=o(inputSeq[g],i-g))return 0;
  for(int i=0;i<g;i++)if(inputSeq[i]<=n&&inputSeq[i]!=o(inputSeq[g],n-g+i))return 0;
  return 1;
}

//----------------------

int replacement(int an, int gondolaSeq[], int replacementSeq[]){
  n=an;vector<pair<int,int>> g;
  int e=-1;
  for(int i=0;i<n;i++)if(gondolaSeq[i]<=n){e=i;break;}
  if(e==-1){
    for(int i=0;i<n;i++)g.push_back({gondolaSeq[i],i+1});
  }
  else{
    for(int i=e;i<n;i++)g.push_back({gondolaSeq[i],o(gondolaSeq[e],i-e)});
    for(int i=0;i<e;i++)g.push_back({gondolaSeq[i],o(gondolaSeq[e],n-e+i)});
  }
  sort(g.begin(),g.end());
  int c=n+1,r=0;
  for(auto i:g){
    if(i.first==i.second)continue;
    //cerr<<i.first<<':'<<i.second<<endl;
    replacementSeq[r]=i.second;r++;
    for(;c<i.first;c++){
      replacementSeq[r]=c;r++;
    }c++;
  }
  //for(int i=0;i<r;i++)cerr<<replacementSeq[i]<<' ';cerr<<endl;
  return r;
}

//----------------------

int countReplacement(int an, int inputSeq[]){
  n=an;
  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...