Submission #1152114

#TimeUsernameProblemLanguageResultExecution timeMemory
1152114alexddGondola (IOI14_gondola)C++20
Compilation error
0 ms0 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]) { map<int,int> idk; for(int i=0;i<n;i++) { if(idk[inputSeq[i]]) return 0; idk[inputSeq[i]]++; } for(int i=0;i<n;i++) { if(inputSeq[i] <= n) { for(int j=0;j<n;j++) { if(inputSeq[(i+j)%n]<=n && inputSeq[(i+j)%n] != (inputSeq[i]-1 + j)%n + 1) return 0; } return 1; } } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { for(int i=0;i<n;i++) gondolaSeq[i]--; vector<int> init(n),init_poz(250000,-1),final_poz(250000,-1); int maxv=-1; for(int i=0;i<n;i++) { final_poz[gondolaSeq[i]]=i; maxv = max(maxv, gondolaSeq[i]); } for(int i=0;i<n;i++) { if(gondolaSeq[i]<n || i==n-1) { for(int j=0;j<n;j++) init[(i+j)%n] = (gondolaSeq[i]+j)%n; for(int j=0;j<n;j++) init_poz[init[j]]=j; int lun=0; for(int j=n;j<=maxv;j++) { if(final_poz[j]==-1) { bool gasit=0; for(int u=0;u<n;u++) { if(final_poz[init[u]] == -1) { replacementSeq[lun++] = init[u]; init[u] = j; init_poz[j] = u; init_poz[replacementSeq[lun-1]] = -1; gasit=1; break; } } assert(gasit); } else { replacementSeq[lun++] = init[final_poz[j]]; init[final_poz[j]] = j; init_poz[j] = final_poz[j]; init_poz[replacementSeq[lun-1]] = -1; } } for(int i=0;i<lun;i++) replacementSeq[i]++; return lun; } } assert(0); } //---------------------- #define ll long long const ll MOD = 1e9+9; ll put(ll a, ll exp) { if(exp==0) return 1; if(exp%2==0) return put(a*a%MOD,exp/2); else return put(a*a%MOD,exp/2)*a%MOD; } int countReplacement(int n, int gondolaSeq[]) { if(!valid(n,gondolaSeq)) return 0; for(int i=0;i<n;i++) gondolaSeq[i]--; bool all_big=1; vector<int> ap; for(int i=0;i<n;i++) { if(gondolaSeq[i]<n) { all_big=0; continue; } ap.push_back(gondolaSeq[i]); } if(!ap.empty()) { ll rez=put((ll)ap.size(), ap[0]-n); for(int j=1;j<ap.size();j++) { rez = rez * put((ll)ap.size()-j, ap[j]-ap[j-1]-1); } } /*for(int j=n;j<=maxv;j++) { if(!ap[j]) { assert(cnt>0); rez = rez*cnt%MOD; } else { cnt--; } }*/ if(all_big) rez = rez*n%MOD; return rez; }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:136:9: error: 'rez' was not declared in this scope
  136 |         rez = rez*n%MOD;
      |         ^~~
gondola.cpp:137:12: error: 'rez' was not declared in this scope
  137 |     return rez;
      |            ^~~