Submission #433419

#TimeUsernameProblemLanguageResultExecution timeMemory
433419muhammad_hokimiyonGondola (IOI14_gondola)C++14
25 / 100
13 ms2380 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]) { int st = 0; for(int i = 0; i < n; i++){ if(inputSeq[i] == 1)st = i; } vector<int> cnt(250500, 0); for(int i = 0; i < n; i++){ cnt[inputSeq[i]]++; } for(int i = 0; i <= 250500; i++){ if(cnt[i] > 1){ return 0; } } for(int it = 0; it < n - 2; it++){ int p = (it + st) % n; int nx = (it + 1 + st) % n; if(inputSeq[p] > n || inputSeq[nx] > n){ continue; } if(inputSeq[nx] - inputSeq[p] != 1){ return 0; } } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { vector<int> a(n + 1, 0); int cnt = 0; int mx = 0; int id1 = 0; for(int i = 0; i < n; i++){ int x = gondolaSeq[i]; if(x > mx){ id1 = i; } mx = max(mx, x); if(x <= n){ a[((i - x + 1) % n + n) % n]++; cnt++; } } vector<int> id(250500, -1); for(int i = 0; i < n; i++){ id[gondolaSeq[i]] = i; } bool f = true; int newn = n + 1; int l = 0; for(int i = 0; i < n; i++){ if(a[i] == cnt){ f = false; vector<int> newid(n, 0); for(int j = 0; j < n; j++){ newid[(i + j) % n] = j + 1; } while(newn <= mx){ if(id[newn] == -1){ replacementSeq[l++] = newid[id1]; newid[id1] = newn++; }else{ replacementSeq[l++] = newid[id[newn]]; newid[id[newn]] = newn++; } } break; } } assert(f == false); return l; } //---------------------- int countReplacement(int n, int inputSeq[]) { int st = 0; for(int i = 0; i < n; i++){ if(inputSeq[i] == 1)st = i; } map<int, int> cnt; for(int i = 0; i < n; i++){ cnt[inputSeq[i]]++; } for(auto x : cnt){ if(x.second > 1){ return 0; } } for(int it = 0; it < n - 2; it++){ int p = (it + st) % n; int nx = (it + 1 + st) % n; if(inputSeq[p] > n || inputSeq[nx] > n){ continue; } if(inputSeq[nx] - inputSeq[p] != 1){ return 0; } } return 1; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:73:63: warning: operation on 'newn' may be undefined [-Wsequence-point]
   73 |                                         newid[id[newn]] = newn++;
      |                                                           ~~~~^~
#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...