Submission #289017

#TimeUsernameProblemLanguageResultExecution timeMemory
289017Shafin666Gondola (IOI14_gondola)C++14
25 / 100
42 ms4728 KiB
#include "gondola.h" #include <bits/stdc++.h> #define pb push_back #define pii pair<ll, ll> #define nyan "(=^・ω・^=)" #define read_input freopen("in.txt","r", stdin) #define print_output freopen("out.txt","w", stdout) typedef long long ll; typedef long double ld; using namespace std; const int maxn = 3e5+10; int next(int p, int n) { int ret = (p + 1) % n; return (ret == 0)? n : ret; } int prev(int p, int n) { if(p == 0) return n-1; else return p-1; } int valid(int n, int inputSeq[]) { int f = 1, prev = -1; for(int i = 0; i < n; i++) { if(inputSeq[i] >= 1 && inputSeq[i] <= n) { if(prev == -1) prev = inputSeq[i]; else if(next(prev, n) == inputSeq[i]) prev = inputSeq[i]; else f = 0; } } set<int> s; for(int i = 0; i < n; i++) s.insert(inputSeq[i]); if(s.size() != n) return 0; return f; } //---------------------- int pos[maxn]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { memset(pos, -1, sizeof pos); vector<int> v; int dummy = 0, mx = 0, none = 1, mn = 1e9+10, mnpos; for(int i = 0; i < n; i++) { if(gondolaSeq[i] > n) { dummy = i; pos[gondolaSeq[i]] = i; mx = max(mx, gondolaSeq[i]); if(gondolaSeq[i] < mn) mn = gondolaSeq[i], mnpos = i; } else none = 0; } if(!none) { for(int i = 0; i < n; i++) { if(gondolaSeq[prev(i, n)] >= 1 && gondolaSeq[prev(i, n)] <= n) gondolaSeq[i] = next(gondolaSeq[prev(i, n)], n); } for(int i = 0; i < n; i++) { if(gondolaSeq[prev(i, n)] >= 1 && gondolaSeq[prev(i, n)] <= n) gondolaSeq[i] = next(gondolaSeq[prev(i, n)], n); } } else { for(int i = mnpos+1, j = 1; j <= n; j++, i = next(i, n)) { gondolaSeq[i-1] = j; } // for(int i = 0; i < n; i++) gondolaSeq[i] = i+1; } for(int i = n+1; i <= mx; i++) { if(pos[i] == -1) v.pb(gondolaSeq[dummy]), gondolaSeq[dummy] = i; else v.pb(gondolaSeq[pos[i]]), gondolaSeq[pos[i]] = i; } int idx = 0; for(auto i : v) replacementSeq[idx++] = i; return v.size(); } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:37:14: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |  if(s.size() != n) return 0;
      |     ~~~~~~~~~^~~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:76:11: warning: 'mnpos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   76 |   for(int i = mnpos+1, j = 1; j <= n; j++, i = next(i, 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...