Submission #422422

#TimeUsernameProblemLanguageResultExecution timeMemory
422422Andyvanh1Gondola (IOI14_gondola)C++14
90 / 100
22 ms3016 KiB
#include <bits/stdc++.h> #include "gondola.h" using namespace std; #define vt vector #define pb push_back #define all(x) (x).begin(),(x).end() #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ ) typedef long long ll; typedef long double ld; typedef vt<int> vi; typedef pair<int,int> pii; int x[100005]; int valid(int n, int inputSeq[]){ int at = -1; rep(i,n)x[i] = inputSeq[i]; sort(x,x+n); for(int i = 1; i < n; i++){ if(x[i]==x[i-1])return 0; } for(int i = 0; i < n; i++){ if(inputSeq[i]>n){ inputSeq[i] = -1; }else{ at = i; } } if(at==-1)return 1; bool bol = true; for(int i = at; i < n; i++){ if(inputSeq[i]!=-1&&inputSeq[i]!=(inputSeq[at]+i-at-1)%n+1){ return 0; } } for(int i = 0; i < at; i++){ if(inputSeq[i]!=-1&&inputSeq[i]!=(inputSeq[at]-at+i+n-1)%n+1){ return 0; } } return 1; } bool taken[100005]; int cur[100005]; int matr[250010]; int replacement(int n, int gondolaSeq[], int replacementSeq[]){ int Max = 0; rep(i,n){ Max = max(Max,gondolaSeq[i]); } rep(i,Max+1){ matr[i] = -1; } int at = -1; for(int i = 0; i < n; i++){ if(gondolaSeq[i]<=n){ at = i; break; } } if(at==-1){ rep(i,n){ cur[i] = i+1; } }else{ for(int i = 0; i < n; i++){ cur[i] = (gondolaSeq[at]-at+i+n-1)%n+1; if(gondolaSeq[i] <= n)taken[i] = true; } } for(int i = 0; i < n; i++){ matr[gondolaSeq[i]] = i; } for(int j = n+1; j <= Max; j++){ if(matr[j]!=-1){ replacementSeq[j-n-1] = cur[matr[j]]; cur[matr[j]] = j; taken[matr[j]] = true; }else{ for(int i = 0; i < n; i++){ if(taken[i]==false){ replacementSeq[j-n-1] = cur[i]; cur[i] = j; break; } } } } return Max-n; } int countReplacement(int n, int inputSeq[]){ int Max = 0; rep(i,n){ Max = max(Max,inputSeq[i]); } rep(i,Max+1){ matr[i] = -1; } int at = -1; for(int i = 0; i < n; i++){ if(inputSeq[i]<=n){ at = i; break; } } ll has = n; if(at==-1){ rep(i,n){ cur[i] = i+1; } }else{ for(int i = 0; i < n; i++){ cur[i] = (inputSeq[at]-at+i+n-1)%n+1; if(inputSeq[i] <= n){taken[i] = true;has--;} } } for(int i = 0; i < n; i++){ matr[inputSeq[i]] = i; } ll ans = 1; for(int j = n+1; j <= Max; j++){ if(matr[j]!=-1){ cur[matr[j]] = j; taken[matr[j]] = true; has--; }else{ ans*=has; ans%=1000000009; } } return (at==-1? (int) (ans*n%1000000009) : (int)ans); }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:9:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    9 | #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ )
      |                          ^
gondola.cpp:20:5: note: in expansion of macro 'rep'
   20 |     rep(i,n)x[i] = inputSeq[i];
      |     ^~~
gondola.cpp:33:10: warning: unused variable 'bol' [-Wunused-variable]
   33 |     bool bol = true;
      |          ^~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:9:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    9 | #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ )
      |                          ^
gondola.cpp:54:5: note: in expansion of macro 'rep'
   54 |     rep(i,n){
      |     ^~~
gondola.cpp:9:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    9 | #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ )
      |                          ^
gondola.cpp:57:5: note: in expansion of macro 'rep'
   57 |     rep(i,Max+1){
      |     ^~~
gondola.cpp:9:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    9 | #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ )
      |                          ^
gondola.cpp:68:9: note: in expansion of macro 'rep'
   68 |         rep(i,n){
      |         ^~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:9:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    9 | #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ )
      |                          ^
gondola.cpp:102:5: note: in expansion of macro 'rep'
  102 |     rep(i,n){
      |     ^~~
gondola.cpp:9:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    9 | #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ )
      |                          ^
gondola.cpp:105:5: note: in expansion of macro 'rep'
  105 |     rep(i,Max+1){
      |     ^~~
gondola.cpp:9:26: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
    9 | #define rep(i,x) for(int (i) = 0; (i) < (x); (i)++ )
      |                          ^
gondola.cpp:117:9: note: in expansion of macro 'rep'
  117 |         rep(i,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...