제출 #297994

#제출 시각아이디문제언어결과실행 시간메모리
297994Plurm곤돌라 (IOI14_gondola)C++11
90 / 100
27 ms3192 KiB
#include "gondola.h" #include <cstdio> #include <cstring> bool flag = false; int valid(int n, int inputSeq[]) { int offs = 0; for(int i = 0; i < n; i++){ if(inputSeq[i] <= n) offs = (n+i-inputSeq[i]+1) % n; } for(int i = 0; i < n; i++){ if(flag){ if(inputSeq[(i+offs) % n] <= n && inputSeq[(i+offs) % n] != i+1) return 0; }else{ if(inputSeq[(i+offs) % n] != i+1) return 0; } } return 1; } //---------------------- int expect[250005]; int initSeq[100005]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int offs = 0; int dummy = 0; int mx = -1; memset(expect, -1, sizeof(expect)); for(int i = 0; i < n; i++){ if(gondolaSeq[i] <= n) offs = (n+i-gondolaSeq[i]+1) % n; else expect[gondolaSeq[i]] = i; if(gondolaSeq[i] > mx){ mx = gondolaSeq[i]; dummy = i; } } for(int i = 0; i < n; i++){ initSeq[(i+offs) % n] = i+1; } int rpidx = 0; for(int i = n+1; i <= mx; i++){ if(expect[i] == -1){ replacementSeq[rpidx++] = initSeq[dummy]; initSeq[dummy] = i; }else{ replacementSeq[rpidx++] = initSeq[expect[i]]; initSeq[expect[i]] = i; } } return rpidx; } //---------------------- const int MOD = 1e9+9; int countReplacement(int n, int inputSeq[]) { flag = true; if(!valid(n, inputSeq)) return 0; flag = false; int offs = -1; int dummy = 0; int mx = -1; int dcnt = 0; memset(expect, -1, sizeof(expect)); for(int i = 0; i < n; i++){ if(inputSeq[i] <= n) offs = (n+i-inputSeq[i]+1) % n; else expect[inputSeq[i]] = i; if(inputSeq[i] > mx){ mx = inputSeq[i]; dummy = i; } } int ans = offs == -1 ? n : 1; if(offs == -1) offs = 0; for(int i = 0; i < n; i++){ initSeq[(i+offs) % n] = i+1; } for(int i = 0; i < n; i++){ if(initSeq[i] == inputSeq[i]) dcnt++; } for(int i = n+1; i <= mx; i++){ if(expect[i] == -1){ ans = 1ll * ans * (n-dcnt) % MOD; }else{ initSeq[expect[i]] = i; dcnt++; } } return ans; }

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

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:64:6: warning: variable 'dummy' set but not used [-Wunused-but-set-variable]
   64 |  int dummy = 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...