Submission #30330

#TimeUsernameProblemLanguageResultExecution timeMemory
30330ozaslanGondola (IOI14_gondola)C++14
40 / 100
19 ms3888 KiB
#include "gondola.h" #include <vector> #include <algorithm> #define MOD 1000000009 using namespace std; int valid(int n, int inputSeq[]) { int bas = -1; for (int i = 0; i < n; i++) if(inputSeq[i] <= n) { bas = i; break; } int s = bas == -1 ? 1 : inputSeq[bas]; bas = bas == -1 ? 0 : bas; int bayrak = 1; for (int i = bas; i < n; i++, s++) { if(s == n+1) s = 1; if(inputSeq[i] != s && inputSeq[i] <= n) { bayrak = 0; break; } } for (int i = 0; i < bas; i++, s++) { if(s == n+1) s = 1; if(inputSeq[i] != s && inputSeq[i] <= n) { bayrak = 0; break; } } if(!bayrak) return 0; vector<int> v (inputSeq, inputSeq+n); sort(v.begin(), v.end()); for(int i = 1; i < n; i++) if(v[i] == v[i-1]) { bayrak = 0; break; } return bayrak; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { return -2; } //---------------------- long long us(long long a, long long b) { if(b == 0) return 1; if(b == 1) return a; if(b & 1) return (us(a, b>>1) * us(a, b>>1) * a) % MOD; return (us(a, b>>1) * us(a, b>>1)) % MOD; } int countReplacement(int n, int inputSeq[]) { // printf("%lld, %lld, %lld\n", us(2, 5), us(5, 3), us(10, 10)); /* for(int i = 0; i < n; i++) printf("%d ", inputSeq[i]); printf("\n"); */ if( !valid(n, inputSeq) ) return 0; vector<int> v; for (int i = 0; i < n; i++) if (inputSeq[i] > n) v.push_back(inputSeq[i]); sort(v.begin(), v.end()); /* for(int i = 0; i < v.size(); i++) printf("%d ", v[i]); printf("\n"); */ long long sonuc = 1; if (v.size() == n) sonuc = n; int onceki = n; for(int i = 0; i < v.size(); i++) { sonuc *= us(v.size()-i, v[i]-onceki-1); sonuc %= MOD; onceki = v[i]; } return sonuc % MOD; }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:90:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if (v.size() == n) sonuc = n;
               ^
gondola.cpp:93:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < v.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...