Submission #775191

#TimeUsernameProblemLanguageResultExecution timeMemory
775191danikoynovGondola (IOI14_gondola)C++14
Compilation error
0 ms0 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; const int maxn = 3e5 + 10; int cnt[maxn]; int valid(int n, int inputSeq[]) { for (int i = 0; i < n; i ++) { int val = inputSeq[(i + 1) % n]; if (inputSeq[i] == n && val == 1) continue; if (val != inputSeq[i] + 1) { ///cout << i << endl; ///cout << inputSeq[i] << " " << val << endl; return 0; } } return 1; } //---------------------- int order[maxn], to_go[maxn]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int pivot = 0; while(pivot < n && gondolaSeq[pivot] > n) pivot ++; if (pivot == n) { pivot = 0; for (int i = 0; i < n; i ++) order[i] = gondolaSeq[i]; } else { order[gondolaSeq[pivot] - 1] = gondolaSeq[pivot]; for (int i = pivot + 1; i < n + pivot; i ++) { order[(gondolaSeq[pivot] - 1 + (i - pivot)) % n] = gondolaSeq[i % n]; } } ///for (int i = 0; i < n; i ++) ///cout << order[i] << " "; /// cout << endl; int mx = 0, pt = 0; for (int i = 0; i < n; i ++) { if (order[i] > n) { if (order[i] > mx) { mx = order[i]; pt = i + 1; } to_go[order[i]] = i + 1; } } ///cout << mx << " " << pt << endl; int idx = 0, last_free = pt; for (int i = n + 1; i <= mx; i ++) { if (to_go[i] != 0) { if (to_go[i] == pt) replacementSeq[idx ++] = last_free; else replacementSeq[idx ++] = to_go[i]; } else { replacementSeq[idx ++] = last_free; last_free = i; } } return max(0, mx - n); } //---------------------- typedef long long ll; const ll mod = 1e9 + 7; int countReplacement(int n, int inputSeq[]) { map < int > mp; for (int i = 0; i < n; i ++) { if (mp[a[i]] != 0) return 0; mp[a[i]] = 1; } int pivot = 0; while(pivot < n && inputSeq[pivot] > n) pivot ++; if (pivot == n) { pivot = 0; for (int i = 0; i < n; i ++) order[i] = inputSeq[i]; } else { order[inputSeq[pivot] - 1] = inputSeq[pivot]; for (int i = pivot + 1; i < n + pivot; i ++) { order[(inputSeq[pivot] - 1 + (i - pivot)) % n] = inputSeq[i % n]; } } ///for (int i = 0; i < n; i ++) ///cout << order[i] << " "; /// cout << endl; int mx = 0, pt = 0; for (int i = 0; i < n; i ++) { if (order[i] > n) { if (order[i] > mx) { mx = order[i]; pt = i + 1; } to_go[order[i]] = i + 1; } } ///cout << mx << " " << pt << endl; ll sp = 0; for (int i = 0; i < n; i ++) if (order[i] > n) sp ++; //cout << sp << endl; int idx = 0, last_free = pt, ways = 1; if (sp == n) ways = n; for (int i = n + 1; i <= mx; i ++) { if (ways == 0) return 0; if (to_go[i] != 0) { sp --; //if (to_go[i] == pt) // replacementSeq[idx ++] = last_free; //else /// replacementSeq[idx ++] = to_go[i]; } else { ways = (ways * sp) % mod; ///replacementSeq[idx ++] = last_free; ///last_free = i; } } return ways; }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:94:15: error: wrong number of template arguments (1, should be at least 2)
   94 |     map < int > mp;
      |               ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from gondola.cpp:2:
/usr/include/c++/10/bits/stl_map.h:100:11: note: provided for 'template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map'
  100 |     class map
      |           ^~~
gondola.cpp:97:16: error: 'a' was not declared in this scope
   97 |         if (mp[a[i]] != 0)
      |                ^
gondola.cpp:99:12: error: 'a' was not declared in this scope
   99 |         mp[a[i]] = 1;
      |            ^
gondola.cpp:143:9: warning: unused variable 'idx' [-Wunused-variable]
  143 |     int idx = 0, last_free = pt, ways = 1;
      |         ^~~
gondola.cpp:143:18: warning: unused variable 'last_free' [-Wunused-variable]
  143 |     int idx = 0, last_free = pt, ways = 1;
      |                  ^~~~~~~~~