Submission #922969

#TimeUsernameProblemLanguageResultExecution timeMemory
922969allin27xGondola (IOI14_gondola)C++17
55 / 100
26 ms5328 KiB
#include <bits/stdc++.h> using namespace std; #include "gondola.h" #define int long long const int mod = 1e9+7; signed valid(signed n, signed S[]){ set<int> s; for(int i=0; i<n; i++) s.insert(S[i]); if (s.size()<n) return 0; int ind = -1; for (int i=0; i<n; i++) if (S[i] <= n) {ind = i; break;} if (ind == -1) return 1; int t = S[ind]; for (int i=ind+1; i!=ind; i++, i%=n){ t++; if (t==n+1) t = 1; if (S[i] <= n && S[i] != t) return 0; } return 1; } signed replacement(signed n, signed S[], signed replacementSeq[]){ int ind = -1; for (int i=0; i<n; i++) if (S[i] <= n) {ind = i; break;} int bg = -1; map<int,int> tr; if (ind == -1){ for (int i=0; i<n; i++){ tr[S[i]] = i+1; bg= max(bg,(int)S[i]); } } else { int t = S[ind]; for (int i=(ind+1)%n; i!=ind; i++, i%=n){ t++; if (t==n+1) t = 1; if (S[i] > n) {tr[S[i]] = t; bg=max(bg,(int)S[i]);} } } if (bg==-1) return 0; int bgm = tr[bg]; tr.erase(bg); for (int i=n+1; i<=bg; i++){ if (tr.count(i)){ replacementSeq[i-(n+1)] = tr[i]; } else { replacementSeq[i-(n+1)] = bgm; bgm = i; } } return (bg-(n+1) + 1); } signed countReplacement(signed n, signed S[]){ if (!valid(n,S)) return 0; int res = 1; set<int>tr; for (int i=0; i<n; i++) tr.insert(S[i]); int bigger = 0; for (int x: tr) if (x>=n+1) bigger++; if (bigger == n) res *= n; for (int i=n+1; i < 25e4+6; i++){ if (tr.count(i)){ bigger--; if (!bigger) return res; } else { res *= bigger; res %= mod; } } return res; }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:9:65: warning: comparison of integer expressions of different signedness: 'std::set<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
    9 |  set<int> s; for(int i=0; i<n; i++) s.insert(S[i]); 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...