Submission #289180

#TimeUsernameProblemLanguageResultExecution timeMemory
289180Shafin666Gondola (IOI14_gondola)C++14
25 / 100
43 ms5240 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; pii mn = {1e9, -1}; for(int i = 0; i < n; i++) { if(gondolaSeq[i] > n) { dummy = i; pos[gondolaSeq[i]] = i; mx = max(mx, gondolaSeq[i]); } else none = 0; mn = min(mn, {gondolaSeq[i], i}); } 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 = 0, start = prev(prev(mn.second, n), n); i < n; i++) gondolaSeq[i] = (start + 1) % n + 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;
      |     ~~~~~~~~~^~~~
#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...