Submission #1064511

#TimeUsernameProblemLanguageResultExecution timeMemory
1064511Charizard2021Gondola (IOI14_gondola)C++17
25 / 100
25 ms4996 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]){ set<int> s; bool works = true; int idx = 0; for(int i = 0; i < n; i++){ s.insert(inputSeq[i]); if(inputSeq[i] <= n){ idx = i; works = false; } } if((int)s.size() != n){ return 0; } if(works){ return 1; } int a[n]; int val = inputSeq[idx]; for(int i = idx; i < n; i++){ a[i] = val++; val %= n; if(val == 0) val = n; } for(int i = 0; i < idx; i++){ a[i] = val++; val %= n; if(val == 0) val = n; } bool works2 = true; for(int i = 0; i < n; i++){ if(inputSeq[i] <= n){ if(inputSeq[i] != a[i]){ works2 = false; } } } if(works2){ return 1; } return 0; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]){ //3, 8, 5, 6, 2 int maxVal = 0; int minVal = INT_MAX; for(int x = 0; x < n; x++){ maxVal = max(maxVal, gondolaSeq[x]); minVal = min(minVal, gondolaSeq[x]); } if(maxVal <= n){ return 0; } if(minVal > n){ int x[maxVal + 1]; for(int a = n + 1; a <= maxVal; a++){ x[a] = 0; } int idx = 0; for(int i = 0; i < n; i++){ if(gondolaSeq[i] <= n){ idx = i; } } int a[n]; int val = gondolaSeq[idx]; for(int i = 0; i < n; i++){ a[i] = i + 1; } for(int i = 0; i < n; i++){ if(gondolaSeq[i] > n){ x[gondolaSeq[i]] = a[i]; } } for(int i = maxVal; i >= n + 1; i--){ if(x[i] == 0){ x[i] = x[i + 1]; } } map<int, vector<int> > mp; for(int i = n + 1; i <= maxVal; i++){ mp[x[i]].push_back(i); } int val9 = 0; int idx9 = 0; for(auto it : mp){ val9 += (int)it.second.size(); replacementSeq[idx9++] = it.first; for(int c : it.second){ if(c == it.second.back()){ break; } replacementSeq[idx9++] = c; } } return val9; } int x[maxVal + 1]; for(int a = n + 1; a <= maxVal; a++){ x[a] = 0; } int idx = 0; for(int i = 0; i < n; i++){ if(gondolaSeq[i] <= n){ idx = i; } } int a[n]; int val = gondolaSeq[idx]; for(int i = idx; i < n; i++){ a[i] = val++; val %= n; if(val == 0) val = n; } for(int i = 0; i < idx; i++){ a[i] = val++; val %= n; if(val == 0) val = n; } for(int i = 0; i < n; i++){ if(gondolaSeq[i] > n){ x[gondolaSeq[i]] = a[i]; } } for(int i = maxVal; i >= n + 1; i--){ if(x[i] == 0){ x[i] = x[i + 1]; } } map<int, vector<int> > mp; for(int i = n + 1; i <= maxVal; i++){ mp[x[i]].push_back(i); } int val9 = 0; int idx9 = 0; vector<pair<int, vector<int> > > v9; for(auto it : mp){ val9 += (int)it.second.size(); v9.push_back(make_pair(it.second[0], (it.second))); } sort(v9.begin(), v9.end()); for(pair<int, vector<int> > c : v9){ replacementSeq[idx9++] = x[c.first]; for(int a : c.second){ if(a == c.second.back()){ break; } replacementSeq[idx9++] = a; } } return val9; } //---------------------- int countReplacement(int n, int inputSeq[]){ return -3; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:72:13: warning: unused variable 'val' [-Wunused-variable]
   72 |         int val = gondolaSeq[idx];
      |             ^~~
#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...