제출 #641435

#제출 시각아이디문제언어결과실행 시간메모리
641435ttamxPilot (NOI19_pilot)C++14
100 / 100
571 ms57044 KiB
#include<bits/stdc++.h>

using namespace std;

const int N=1e6+5;

int n,q;
int p[N];
long long sz[N],ans[N];
long long sum=0;
bool vis[N];
vector<pair<int,int>> a,b;

int fp(int u){
    if(u==p[u])return u;
    return p[u]=fp(p[u]);
}

void merg(int u,int v){
    u=fp(u),v=fp(v);
    sum-=sz[u]*(sz[u]+1)/2;
    sum-=sz[v]*(sz[v]+1)/2;
    p[v]=u;
    sz[u]+=sz[v];
    sz[v]=0;
    sum+=sz[u]*(sz[u]+1)/2;
}

int main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n >> q;
    iota(p,p+n+1,0);
    for(int i=1;i<=n;++i){
        int x;
        cin >> x;
        a.emplace_back(x,i);
        sz[i]=1;
    }
    for(int i=1;i<=q;++i){
        int x;
        cin >> x;
        b.emplace_back(x,i);
    }
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    int idx=0;
    for(auto [h,i]:b){
        while(idx<n && a[idx].first<=h){
            vis[a[idx].second]=1;
            ++sum;
            if(vis[a[idx].second-1])merg(a[idx].second-1,a[idx].second);
            if(vis[a[idx].second+1])merg(a[idx].second+1,a[idx].second);
            ++idx;
        }
        ans[i]=sum;
    }
    for(int i=1;i<=q;++i)cout << ans[i] << '\n';
}

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

pilot.cpp: In function 'int main()':
pilot.cpp:47:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   47 |     for(auto [h,i]:b){
      |              ^
#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...