Submission #1041232

#TimeUsernameProblemLanguageResultExecution timeMemory
1041232DeathIsAweGondola (IOI14_gondola)C++14
90 / 100
1086 ms5484 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; #define ll long long int valid(int n, int inputSeq[]) { unordered_set<int> dupcheck; for (int i=0;i<n;i++) { dupcheck.insert(inputSeq[i]); } if (dupcheck.size() < n) { return 0; } int start = -1, temp; for (int i=0;i<n;i++) { if (inputSeq[i] <= n) { start = i; break; } } if (start == -1) { return 1; } else { for (int i=start+1;i<n;i++) { if (inputSeq[i] <= n) { temp = (inputSeq[i] - inputSeq[start] + n) % n; if (temp != i - start) { return 0; } start = i; } } } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int temp; for (int i=0;i<n;i++) { if (gondolaSeq[i] <= n) { temp = gondolaSeq[i] - i; break; } } vector<pair<int,int>> bruh; for (int i=0;i<n;i++) { if (gondolaSeq[i] > n) { bruh.push_back(make_pair(gondolaSeq[i], i)); } } sort(bruh.begin(), bruh.end()); int tracker = 0; for (pair<int,int> i: bruh) { replacementSeq[tracker++] = (i.second + temp + n) % n; if (replacementSeq[tracker - 1] == 0) { replacementSeq[tracker - 1] = n; } while (tracker + n < i.first) { replacementSeq[tracker] = tracker + n; tracker++; } } return tracker; } int countReplacement(int n, int inputSeq[]) { if (valid(n, inputSeq) == 0) { return 0; } vector<int> overs; for (int i=0;i<n;i++) { if (inputSeq[i] > n) { overs.push_back(inputSeq[i]); } } sort(overs.begin(),overs.end()); int siz = overs.size(), below = n; ll ans = 1; bool bruh = false; if (siz == n) { bruh = true; } for (int i=0;i<siz;i++) { for (int j=below + 1;j<overs[i];j++) { ans *= (ll)(siz - i); ans %= 1000000009; } if (bruh) { bruh = false; ans *= (ll)(siz-i); ans %= 1000000009; } below = overs[i]; } return ans; }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:11:23: warning: comparison of integer expressions of different signedness: 'std::unordered_set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   11 |   if (dupcheck.size() < n) {
      |       ~~~~~~~~~~~~~~~~^~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:58:43: warning: 'temp' may be used uninitialized in this function [-Wmaybe-uninitialized]
   58 |     replacementSeq[tracker++] = (i.second + temp + n) % n;
      |                                  ~~~~~~~~~^~~~~~
#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...