제출 #465027

#제출 시각아이디문제언어결과실행 시간메모리
465027TeaTimeMoney (IZhO17_money)C++17
100 / 100
1369 ms101120 KiB
//#pragma GCC optimize("O3") //#pragma GCC target("avx2") #include <iostream> #include <vector> #include <string> #include <algorithm> #include <map> #include <set> #include <queue> #include <unordered_map> using namespace std; #define fastInp cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); typedef long long ll; typedef long double ld; #define int ll const ll SZ = 1e6 + 10, INF = 1e9; ll n, m, q; vector<ll> vec; ll cnt_all[SZ], cnt[SZ], nxt[SZ], pr[SZ]; signed main() { fastInp; cin >> n; vec.resize(n); ll ans = 0; for (auto& c : vec) cin >> c; multiset<ll> er; vector<ll> vec2; for (int i = 0; i < n; i++) { er.insert(vec[i]); vec2.push_back(vec[i]); cnt_all[vec[i]]++; } sort(vec2.begin(), vec2.end()); auto it = unique(vec2.begin(), vec2.end()); vec2.erase(it, vec2.end()); for (int i = 0; i < vec2.size(); i++) { if (i > 0) { pr[vec2[i]] = vec2[i - 1]; } if (i < vec2.size() - 1) { nxt[vec2[i]] = vec2[i + 1]; } } er.insert(INF); //if (er.size() != n + 1) return 1; while (vec.size()) { ans++; ll cur = vec.back(); vector<ll> ltr; ltr.push_back(cur); vec.pop_back(); ll ths = 1; cnt[cur]++; while (vec.size() > 0) { if (vec.back() == cur) { ltr.push_back(vec.back()); cur = vec.back(); cnt[cur]++; vec.pop_back(); continue; } ll q = nxt[vec.back()]; if (vec.size() > 0 && q == cur && (ths == 1 || cnt[cur] == cnt_all[cur])) { ltr.push_back(vec.back()); cur = vec.back(); cnt[cur]++; vec.pop_back(); ths++; } else { break; } } for (auto c : ltr) { if (cnt[c] == cnt_all[c]) { pr[nxt[c]] = pr[c]; nxt[pr[c]] = nxt[c]; } } } //if (er.size() != 1) return 1; cout << ans; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

money.cpp: In function 'int main()':
money.cpp:48:23: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |     for (int i = 0; i < vec2.size(); i++) {
      |                     ~~^~~~~~~~~~~~~
money.cpp:52:15: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |         if (i < vec2.size() - 1) {
      |             ~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...