Submission #138745

#TimeUsernameProblemLanguageResultExecution timeMemory
138745MohamedAhmed04곤돌라 (IOI14_gondola)C++14
60 / 100
61 ms4856 KiB
#include "gondola.h" #include <bits/stdc++.h> //#include "grader.cpp" using namespace std ; int valid(int n, int arr[]) { int st = -1; for(int i = 0 ; i < n ; ++i) { if(arr[i] <= n) { st = i ; break ; } } map<int , int>mp ; for(int i = 0 ; i < n ; ++i) { if(mp[arr[i]] > 0) return 0 ; mp[arr[i]]++ ; } if(st == -1) return 1 ; int idx = st , cnt = 0; while(true) { idx++ ; idx %= n ; cnt++ ; if(idx == st) break ; if(arr[idx] <= n) continue ; arr[idx] = (arr[st] + cnt) % n ; if(arr[idx] == 0) arr[idx] = n ; } idx = st , cnt = 0 ; while(true) { idx++ ; idx %= n ; cnt++ ; if(idx == st) break ; int x = (arr[st] + cnt) % n ; if(x == 0) x = n ; if(x != arr[idx] && arr[idx] <= n) return 0 ; } return 1; } //---------------------- int replacement(int n, int arr[], int replacementSeq[]) { int st = -1 , MAX = *max_element(arr , arr + n); map<int , int>mp ; for(int i = 0 ; i < n ; ++i) mp[arr[i]] = 1 ; for(int i = 0 ; i < n ; ++i) { if(arr[i] <= n) { st = i ; break ; } } vector< pair<int , int> >vp ; if(st == -1) { for(int i = 0 ; i < n ; ++i) vp.push_back({arr[i] , i+1}) ; } else { int idx = st , cnt = 0; while(true) { idx++ ; idx %= n ; cnt++ ; if(idx == st) break ; if(arr[idx] <= n) continue ; int x = (arr[st] + cnt) % n ; if(x == 0) x = n ; vp.push_back({arr[idx] , x}) ; } } sort(vp.begin() , vp.end()) ; int ans = 0 , last = n+1; for(int i = 0 ; i < vp.size() ; ++i) { replacementSeq[ans] = vp[i].second ; ans++ ; for(int j = last ; j < vp[i].first ; ++j) { replacementSeq[ans] = j ; ans++ ; } last = vp[i].first + 1 ; } return ans ; } //---------------------- int countReplacement(int n, int arr[]) { if(!valid(n , arr)) return 0 ; int a = 0 , b = 0 , cnt = 0; for(int i = 0 ; i < n ; ++i) { if(arr[i] > n) cnt++ ; if(arr[i] == n+2) a = 1 ; if(arr[i] == n+3) b = 1 ; } if(cnt == n) { if(n == 1 || n == 3) return 1 ; return 2 ; } if(a && b) return 2 ; return 1 ; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:99:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0 ; i < vp.size() ; ++i)
                  ~~^~~~~~~~~~~
gondola.cpp:61:16: warning: unused variable 'MAX' [-Wunused-variable]
  int st = -1 , MAX = *max_element(arr , arr + 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...