Submission #1255142

#TimeUsernameProblemLanguageResultExecution timeMemory
1255142CrabCNHEmployment (JOI16_employment)C++20
30 / 100
83 ms14388 KiB
#include <bits/stdc++.h> #define task "BriantheCrab" #define int long long #define pii pair <int, int> #define fi first #define se second #define szf sizeof #define sz(s) (int)((s).size()) #define all(v) (v).begin(), (v).end() typedef long long ll; typedef unsigned long long ull; typedef long double ld; using namespace std; template <class T> void minimize (T &t, T f) {if (t > f) t = f;} template <class T> void maximize (T &t, T f) {if (t < f) t = f;} const int maxN = 2e5 + 5; const int inf = 1e18 + 7; const int mod = 1e9 + 7; // khong tu code thi khong kha len duoc dau // biet sol roi thi tu lam not di int n, m; int a[maxN], res[maxN]; bool visited[maxN]; int par[maxN], sz[maxN]; int comp = 0; vector <pii> off; void init () { for (int i = 1; i <= n; i ++) { par[i] = i; sz[i] = 1; } } int getRoot (int u) { if (par[u] == u) { return u; } return (par[u] = getRoot (par[u])); } void merge (int u, int v) { u = getRoot (u); v = getRoot (v); if (u == v) { return; } if (sz[u] < sz[v]) { swap (u, v); } par[v] = u; sz[u] += sz[v]; comp --; return; } namespace sub2 { void sol () { init (); vector <pii> aa; for (int i = 1; i <= n; i ++) { aa.push_back ({a[i], i}); } sort (all (aa), greater <pii> ()); sort (all (off), greater <pii> ()); int j = 0; for (int i = 0; i < m; i ++) { while (off[i].fi <= aa[j].fi && j < n) { int cur = aa[j].se; comp ++; visited[cur] = 1; if (cur >= 2 && visited[cur - 1]) { merge (cur - 1, cur); //cout << "merge " << cur - 1 << ' ' << cur << '\n'; } if (cur <= n - 1 && visited[cur + 1]) { //cout << "bruh " << getRoot (cur + 1) << ' ' << getRoot (cur) << '\n'; merge (cur + 1, cur); //cout << "merge " << cur + 1 << ' ' << cur << '\n'; //cout << "bruh " << getRoot (cur + 1) << ' ' << getRoot (cur) << '\n'; } j ++; } res[off[i].se] = comp; } // for (int i = 1; i <= n; i ++) { // cout << getRoot (i) << ' '; // } for (int i = 1; i <= m; i ++) { cout << res[i] << '\n'; } } } void solve () { cin >> n >> m; for (int i = 1; i <= n; i ++) { cin >> a[i]; } for (int i = 1; i <= m; i ++) { int t; cin >> t; if (t == 1) { int b; cin >> b; off.push_back ({b, i}); } else { int c, d; cin >> c >> d; } } sub2 :: sol (); return; } signed main () { cin.tie (nullptr) -> sync_with_stdio (false); if (fopen (task".inp", "r")) { freopen (task".inp", "r", stdin); freopen (task".out", "w", stdout); } int t = 1; //cin >> t; while (t --) { solve (); } return 0; } // thfv

Compilation message (stderr)

employment.cpp: In function 'int main()':
employment.cpp:129:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  129 |         freopen (task".inp", "r", stdin);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
employment.cpp:130:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  130 |         freopen (task".out", "w", stdout);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...