Submission #1034713

#TimeUsernameProblemLanguageResultExecution timeMemory
1034713ArthuroWichGondola (IOI14_gondola)C++17
55 / 100
29 ms5764 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int gondolaSeq[]) { int mi = INT_MAX, ind = -1; set<int> c; for (int i = 0; i < n; i++) { c.insert(gondolaSeq[i]); if (mi > gondolaSeq[i]) { mi = gondolaSeq[i]; ind = i; } } if (c.size() < n) { return 0; } if (mi > n) { return 1; } ind -= (mi-1); ind += n; ind %= n; vector<int> a; for (int i = ind; i < n; i++) { a.push_back(gondolaSeq[i]); } for (int i = 0; i < ind; i++) { a.push_back(gondolaSeq[i]); } for (int i = 0; i < n; i++) { if (a[i] <= n && a[i] != i+1) { return 0; } } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int mi = INT_MAX, ind = -1, ma = 0; set<int> c; for (int i = 0; i < n; i++) { ma = max(ma, gondolaSeq[i]); c.insert(gondolaSeq[i]); if (mi > gondolaSeq[i]) { mi = gondolaSeq[i]; ind = i; } } vector<pair<int, int>> num; if (ma <= n) { return 0; } if (mi > n) { for (int i = 0; i < n; i++) { num.push_back({gondolaSeq[i], i+1}); } int l = 0; sort(num.begin(), num.end()); l = num.back().first-n; for (int i = 0; i < l; i++) { replacementSeq[i] = num.back().second; } for (int i = 0; i < num.size(); i++) { replacementSeq[num[i].first-n-1] = num[i].second; } vector<int> ans(n+1, 0); for (int i = 1; i <= n; i++) { ans[i] = i; } for (int i = 0; i < l; i++) { int v = replacementSeq[i]; replacementSeq[i] = ans[replacementSeq[i]]; ans[v] = n+i+1; } return l; } else { ind -= (mi-1); ind += n; ind %= n; vector<int> a; for (int i = ind; i < n; i++) { a.push_back(gondolaSeq[i]); } for (int i = 0; i < ind; i++) { a.push_back(gondolaSeq[i]); } for (int i = 0; i < n; i++) { if (a[i] > n) { num.push_back({a[i], i+1}); } } int l = 0; sort(num.begin(), num.end()); l = num.back().first-n; for (int i = 0; i < l; i++) { replacementSeq[i] = num.back().second; } for (int i = 0; i < num.size(); i++) { replacementSeq[num[i].first-n-1] = num[i].second; } vector<int> ans(n+1, 0); for (int i = 1; i <= n; i++) { ans[i] = i; } for (int i = 0; i < l; i++) { int v = replacementSeq[i]; replacementSeq[i] = ans[replacementSeq[i]]; ans[v] = n+i+1; } return l; } } int countReplacement(int n, int gondolaSeq[]) { return 0; }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:14:18: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   14 |     if (c.size() < n) {
      |         ~~~~~~~~~^~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:62:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |         for (int i = 0; i < num.size(); i++) {
      |                         ~~^~~~~~~~~~~~
gondola.cpp:97:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   97 |         for (int i = 0; i < num.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...