제출 #30336

#제출 시각아이디문제언어결과실행 시간메모리
30336kavunGondola (IOI14_gondola)C++14
20 / 100
59 ms262144 KiB
#include "gondola.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int mod = 1e9 + 9;
int power(int x, int k)
{
  if(k == 1)
    return x;
  if(k & 1)
    return x*power(x,k-1) % mod;
  else
    {
      int val = power(x,k/2);
      return val*val % mod;
    }
}

int valid(int n, int inputSeq[])
{
  int index = -1, val = -1;
  for(int i = 0; i < n; i++)
    if(inputSeq[i] <= n)
      {
	index = i;
	val = inputSeq[i];
	break;
      }
  for(int i = index + 1; i < n; i++)
    if(inputSeq[i] <= n && (val + i - index - 1) % n + 1 != inputSeq[i])
      return 0;

  set<int> s;
  for(int i = 0; i < n; i++)
    s.insert(inputSeq[i]);
  if(s.size() == n)
    return 1;
  else 
    return 0;
}

//----------------------

int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
  return -2;
}

//----------------------

int countReplacement(int n, int inputSeq[])
{
  if(!valid(n,inputSeq))
    return 0;
  int ans = 1;
  set<int> rep;
  for(int i = 0; i < n; i++)
    if(inputSeq[i] > n)
      rep.insert(inputSeq[i]);
  int before = n, cnt = 0;
  for(set<int>::iterator it = rep.begin(); it != rep.end(); it++)
    {
      int x = *it;
      ans = (ll) ans * power(rep.size() - cnt, x - before - 1) % mod;
      before = x;
      cnt++;
    }
  sort(inputSeq, inputSeq+n);
  if(inputSeq[0] > n)
    ans = (ll)ans * n % mod;
  return ans;
}

컴파일 시 표준 에러 (stderr) 메시지

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:37:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(s.size() == 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...