Submission #287895

#TimeUsernameProblemLanguageResultExecution timeMemory
287895shrek12357Gondola (IOI14_gondola)C++14
25 / 100
45 ms4984 KiB
#include <iostream> #include <vector> #include <algorithm> #include <string> #include <map> #include <set> #include <climits> #include <cmath> #include <fstream> #include <queue> #include "gondola.h" using namespace std; int valid(int n, int inputSeq[]) { set<int> found; for (int i = 0; i < n; i++) { found.insert(inputSeq[i]); } if (found.size() != n) { return 0; } int idx = -1; int val = 0; for (int i = 0; i < n; i++) { if (inputSeq[i] <= n) { idx = i; val = inputSeq[i]; break; } } int actual[100005]; actual[idx] = val; val++; if (val > n) { val -= n; } for (int i = 1; i < n; i++) { int cur = (idx + i + n) % n; int pre = (idx + i - 1 + n) % n; actual[cur] = val; val++; if (val > n) { val -= n; } } for (int i = 0; i < n; i++) { if (inputSeq[i] <= n && inputSeq[i] != actual[i]) { return 0; } } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int idx = -1, val = 0; for (int i = 0; i < n; i++) { if (gondolaSeq[i] <= n) { idx = i; val = gondolaSeq[i]; break; } } int actual[100005]; actual[idx] = val; val++; if (val > n) { val -= n; } for (int i = 1; i < n; i++) { int cur = (idx + i + n) % n; int pre = (idx + i - 1 + n) % n; actual[cur] = val; val++; if (val > n) { val -= n; } } set<pair<int, int>> changes; for (int i = 0; i < n; i++) { if (gondolaSeq[i] > n) { changes.insert({ gondolaSeq[i], actual[i]}); } } int cur = n + 1; vector<int> ans; while (changes.size() > 0) { if (cur == changes.begin()->first) { ans.push_back(changes.begin()->second); changes.erase(changes.begin()); } else { ans.push_back(changes.begin()->second); int temp = changes.begin()->first; changes.erase(changes.begin()); changes.insert({ temp, cur }); } cur++; } for (int i = 0; i < ans.size(); i++) { replacementSeq[i] = ans[i]; //cout << replacementSeq[i] << endl; if (ans[i] == 0) { ans[i] = 1; return 5000; } } return ans.size(); } int countReplacement(int n, int inputSeq[]) { return 0; }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:19:19: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   19 |  if (found.size() != n) {
      |      ~~~~~~~~~~~~~^~~~
gondola.cpp:39:7: warning: unused variable 'pre' [-Wunused-variable]
   39 |   int pre = (idx + i - 1 + n) % n;
      |       ^~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:71:7: warning: unused variable 'pre' [-Wunused-variable]
   71 |   int pre = (idx + i - 1 + n) % n;
      |       ^~~
gondola.cpp:99:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   99 |  for (int i = 0; i < ans.size(); i++) {
      |                  ~~^~~~~~~~~~~~
#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...