Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
using namespace std; #define rep(i, a, b) for (int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair
pii; typedef vector
vi; typedef vector
vll; void solve() { ll n; cin >> n; vector
> v(n); for (ll i = 0; i < n; i++) { cin >> v[i].first; v[i].second = i; } vector
> g(n); if (n == 1) { cout << 1 << endl; return; } for (ll i = 0; i < n; i++) { if (i == 0) { if (v[i + 1] < v[i]) { g[i].push_back(i + 1); } if (v[i + 1] == v[i]) { g[i].push_back(i + 1); g[i + 1].push_back(i); } } else if (i == n - 1) { if (v[n - 2] < v[n - 1]) { g[n - 1].push_back(n - 2); } if (v[n - 2] == v[n - 1]) { g[n - 1].push_back(n - 2); g[n - 2].push_back(n - 1); } } else { if (v[i - 1] < v[i]) { g[i].push_back(i - 1); } if (v[i] > v[i + 1]) { g[i].push_back(i + 1); } if (v[i] == v[i + 1]) { g[i].push_back(i + 1); g[i + 1].push_back(i); } if (v[i + 1] == v[i]) { g[i].push_back(i + 1); g[i + 1].push_back(i); } } } sort(v.rbegin(), v.rend()); vector
visited(n, 0); ll grp_index = 0; for (ll i = 0; i < n; i++) { if (visited[v[i].second]) { continue; } queue
q; q.push(v[i].second); while (!q.empty()) { auto e = q.front(); q.pop(); visited[e] = 1; for (auto f : g[e]) { if (!visited[f]) { q.push(f); } } } grp_index++; } cout << grp_index << endl; } int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); int t; cin >> t; while (t--) solve(); }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)