Submission #1249059

#TimeUsernameProblemLanguageResultExecution timeMemory
1249059GeforgsPilot (NOI19_pilot)C++20
100 / 100
419 ms54228 KiB
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <queue> #include <map> #include <stack> #include <bitset> #include <string> #include <cstring> #include <iterator> #include <random> #define ll long long #define ld long double #define inf (ll)(2*1e18) #define sort(a) sort(a.begin(), a.end()) #define reverse(a) reverse(a.begin(), a.end()) #define pb push_back #define endl "\n" using namespace std; ll get(ll x, vector<ll>& parent){ if(x == parent[x]) return x; return parent[x] = get(parent[x], parent); } ll unite(ll x, ll y, vector<ll>& parent, vector<ll>& size){ x = get(x, parent); y = get(y, parent); if(x == y) return 0; ll res = size[x]*size[y]; size[y] += size[x]; parent[x] = y; return res; } void solve(){ ll n, q, i, y; cin>>n>>q; vector<pair<ll, ll>> a(n); vector<ll> b(n); vector<ll> parent(n); vector<ll> ans(1e6 + 7); vector<ll> size(n, 1); for(i=0;i<n;++i){ cin>>a[i].first; a[i].second = i; parent[i] = i; b[i] = a[i].first; } sort(a); for(auto [val, x]: a){ ++ans[val]; if(x > 0 and val >= b[x-1]){ ans[val] += unite(x, x-1, parent, size); } if(x < n-1 and val >= b[x+1]){ ans[val] += unite(x+1, x, parent, size); } } for(i=1;i<1e6+7;++i){ ans[i] += ans[i-1]; } for(i=0;i<q;++i){ cin>>y; cout<<ans[y]<<endl; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); srand(time(nullptr)); ll t=1; // cin>>t; for(;t>0;--t){ solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...