Submission #1149542

#TimeUsernameProblemLanguageResultExecution timeMemory
1149542henriessStone Arranging 2 (JOI23_ho_t1)C++20
100 / 100
46 ms15688 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #pragma GCC optimize("Ofast","inline","fast-math","unroll-loops","no-stack-protector","-ffast-math", "O3") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma") #define SCD(t) scanf("%d",&t) #define SCLD(t) scanf("%ld",&t) #define SCLLD(t) scanf("%lld",&t) #define SCC(t) scanf("%c",&t) #define SCS(t) scanf("%s",t) #define SCF(t) scanf("%f",&t) #define SCLF(t) scanf("%lf",&t) #define MEM(a, b) memset(a, (b), sizeof(a)) #define FOR(i, j, k, in) for (int i=j ; i<k ; i+=in) #define RFOR(i, j, k, in) for (int i=j ; i>=k ; i-=in) #define REP(i, j) FOR(i, 0, j, 1) #define RREP(i, j) RFOR(i, j, 0, 1) #define all(cont) cont.begin(), cont.end() #define rall(cont) cont.end(), cont.begin() #define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++) #define IN(A, B, C) assert( B <= A && A <= C) #define MP make_pair #define PB push_back #define INF (int)1e9 #define EPS 1e-9 #define PI 3.1415926535897932384626433832795 #define MOD 1000000007 #define readInt(type) readInt<type>() const double pi=acos(-1.0); typedef pair<int, int> PII; typedef vector<int> VI; typedef vector<string> VS; typedef vector<PII> VII; typedef vector<VI> VVI; typedef map<int,int> MPII; typedef set<int> SETI; typedef multiset<int> MSETI; typedef long long int int64; typedef unsigned long long int uint64; typedef vector<int64> VI64; typedef vector<uint64> VUI64; template<typename T, typename U> inline void amin(T &x, U y) { if(y < x) x = y; } template<typename T, typename U> inline void amax(T &x, U y) { if(x < y) x = y; } #ifdef DEBUG #define debug(args...) (Debugger()) , args class Debugger { public: Debugger(const string& _separator = " ") : first(true), separator(_separator){} template<typename ObjectType> Debugger& operator , (const ObjectType& v) { if(!first) cerr << separator; cerr << v; first = false; return *this; } ~Debugger() { cerr << endl;} private: bool first; string separator; }; #else #define debug(args...) // Just strip off all debug tokens #endif // }}} /********** Main() function **********/ int64 grid[512][512]; int Fx[100]; int Fy[100]; int64 next_grid[512][512]; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector<int> A(N); for (int i = 0; i < N; i++){ cin >> A[i]; } vector<pair<int, long long>> seg; seg.reserve(N); unordered_map<int, int> pos; pos.reserve(N * 2); for (int i = 0; i < N; i++){ int c = A[i]; if(seg.empty()){ seg.push_back({c, 1}); pos[c] = 0; } else if(seg.back().first == c){ seg.back().second++; } else if(pos.find(c) != pos.end()){ int idx = pos[c]; long long removedCount = 0; while((int)seg.size() > idx + 1){ removedCount += seg.back().second; pos.erase(seg.back().first); seg.pop_back(); } seg[idx].second += removedCount + 1; } else { seg.push_back({c, 1}); pos[c] = seg.size() - 1; } } for (auto &p : seg) { int color = p.first; long long count = p.second; while(count--){ cout << color << "\n"; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...