Submission #974305

#TimeUsernameProblemLanguageResultExecution timeMemory
974305rahidilbayramliGondola (IOI14_gondola)C++17
55 / 100
25 ms5972 KiB
#include "gondola.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long #define ld long double #define vl vector<ll> #define vi vector<int> #define pii pair<int, int> #define pll pair<ll, ll> #define all(v) v.begin(), v.end() #define pb push_back #define f first #define s second using namespace std; using namespace __gnu_pbds; typedef tree<pll, null_type, less<pll>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; int valid(int n, int inputSeq[]) { int nxt[n+5], v[n+5]; set<int>st; for(int i = 1; i <= n; i++) { v[i] = inputSeq[i-1]; st.insert(v[i]); } for(int i = 1; i <= n; i++) nxt[i] = (i % n) + 1; bool flag = false; for(int i = 1; i <= n; i++) { if(v[i] <= n && v[(i%n)+1] <= n && nxt[v[i]] != v[(i%n)+1]) flag = true; } if(flag || st.size() < n) return 0; return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int v[n+5]; int flag = 0; for(int i = 1; i <= n; i++){ v[i] = gondolaSeq[i-1]; if(v[i] <= n) flag = 1; } if(!flag) { vector<pii>vect; for(int i = 1; i <= n; i++) vect.pb({v[i], i}); sort(all(vect)); int last = n + 1, idx = 0; for(int i = 0; i < n; i++) { replacementSeq[idx] = vect[i].s; idx++; for(int j = last; j < vect[i].f; j++) { replacementSeq[idx] = j; idx++; } last = vect[i].f + 1; } return idx; } else { vector<pii>vect; int idx; for(int i = 1; i <= n; i++) { if(v[i] <= n && v[i] >= 1){ idx = i; break; } } vect.pb({v[idx], v[idx]}); int idxt = v[idx]; for(int i = idx + 1; i <= n; i++) { idxt++; if(idxt == n + 1) idxt = 1; vect.pb({v[i], idxt}); } idxt = v[idx]; for(int i = idx - 1; i >= 1; i--) { idxt--; if(idxt == 0) idxt = n; vect.pb({v[i], idxt}); } sort(all(vect)); int last = n + 1; idx = 0; for(int i = 0; i < n; i++) { if(vect[i].f > n){ replacementSeq[idx] = vect[i].s; idx++; } for(int j = last; j < vect[i].f; j++) { replacementSeq[idx] = j; idx++; } last = max(last, vect[i].f + 1); } return idx; } } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:35:26: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   35 |     if(flag || st.size() < n)
      |                ~~~~~~~~~~^~~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:92:17: warning: 'idx' may be used uninitialized in this function [-Wmaybe-uninitialized]
   92 |         for(int i = idx - 1; i >= 1; 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...