Submission #915281

#TimeUsernameProblemLanguageResultExecution timeMemory
915281ByeWorldGondola (IOI14_gondola)C++14
25 / 100
8 ms4052 KiB
#include "gondola.h" #include <bits/stdc++.h> #define bupol __builtin_popcount #define ll long long #define ld long double #define fi first #define se second #define pb push_back #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)>>1) using namespace std; const int MAXN = 3e5+10; const int MAXK = 205; const int LOG = 20; const int MOD = 1e9+7; const int SQRT = 520; const int INF = 1e9+10; typedef pair<int,int> pii; typedef pair<int, pii> ipii; int n; int a[MAXN], sta[MAXN], idx = -1; vector <int> vec, ans; vector <pii> sw; bool use[MAXN]; int mn = INF, mx = -1; int valid(int N, int inputSeq[]) { n = N; for(int i=1; i<=n; i++) a[i] = inputSeq[i-1]; for(int i=1; i<=n; i++){ if(mn > a[i]){ mn = a[i]; idx = i; } } assert(idx != -1); vec.pb(-1); for(int i=idx; i<=n; i++) vec.pb(a[i]); for(int i=1; i<=idx-1; i++) vec.pb(a[i]); for(int i=1; i<=n; i++){ if(use[vec[i]]) return 0; // ngedobel use[vec[i]] = 1; if(vec[i] >= n+1) continue; // gpp gk dicek // vec[i] <= n int num = vec[1]+i-1; // harusnya angkanya brp if(num >= n+1) num -= n; if(mx >= vec[i] || vec[i] != num) return 0; // loh kok turun mx = max(mx, vec[i]); } return 1; } //---------------------- int replacement(int N, int gondolaSeq[], int replacementSeq[]) { n = N; for(int i=1; i<=n; i++) a[i] = gondolaSeq[i-1]; for(int i=1; i<=n; i++){ if(mn > a[i]){ mn = a[i]; idx = i; } } assert(idx != -1); vec.pb(-1); for(int i=idx; i<=n; i++) vec.pb(a[i]); for(int i=1; i<=idx-1; i++) vec.pb(a[i]); for(int i=1; i<=n; i++){ if(use[vec[i]]) return 0; // ngedobel use[vec[i]] = 1; int num = vec[1]+i-1; // harusnya angkanya brp if(num >= n+1) num -= n; sta[i] = num; // startnya brp if(vec[i] <= n) continue; // gpp gk dicek if(vec[i] >= n+1){ sw.pb({i, num}); } } sort(sw.begin(), sw.end()); //for(auto in : sw) cout << vec[in.fi] << ' ' << in.se << " p\n"; for(auto in : sw){ int idx = in.fi, val = vec[idx], num = in.se; // num -> val int cnt = n+1; ans.pb(sta[idx]); sta[idx] = cnt++; for(int i=sta[idx]; i<=val-1; i++){ ans.pb(sta[idx]); sta[idx] = cnt++; } } for(int i=0; i<ans.size(); i++) replacementSeq[i] = ans[i]; return (int)(ans.size()); } //---------------------- int countReplacement(int N, int inputSeq[]) { n = N; for(int i=1; i<=n; i++) a[i] = inputSeq[i-1]; return -3; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:92:36: warning: unused variable 'num' [-Wunused-variable]
   92 |   int idx = in.fi, val = vec[idx], num = in.se; // num -> val
      |                                    ^~~
gondola.cpp:102:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  102 |  for(int i=0; i<ans.size(); i++) replacementSeq[i] = ans[i];
      |               ~^~~~~~~~~~~
#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...