제출 #1272885

#제출 시각아이디문제언어결과실행 시간메모리
1272885vulestamenkovicStranded Far From Home (BOI22_island)C++20
100 / 100
475 ms184904 KiB
#include <bits/stdc++.h>
#define MAXN (int)2e5+5
#define pii pair<int,int>
#define fi first
#define se second
#define int long long
using namespace std;
int a[MAXN];
vector<int>g[MAXN];
int p[MAXN],s[MAXN],r[MAXN],l[MAXN],o[MAXN],e[MAXN],b[MAXN],t[MAXN],dp[MAXN];
queue<int>q[MAXN];
int find(int x){
    if(x==p[x]){
        return x;
    }
    return p[x]=find(p[x]);
}void unite(int u,int v){
    u=find(u);
    v=find(v);
    if(u==v){return;}
    if(r[u]<r[v]){
        swap(u,v);
    }
    r[u]+=r[v];
    s[u]+=s[v];
    p[v]=u;
}
void solve(){
    int n,m;cin>>n>>m;
    map<int,vector<int>>v;
    vector<pii>v2;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        p[i]=i;r[i]=1;s[i]=a[i];o[i]=e[i]=0;
        v[a[i]].push_back(i);
        v2.emplace_back(a[i],i);
    }for(int i=0;i<m;i++){
        int u,v;cin>>u>>v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    for(auto&x:v){
        for(int&y:x.se){
            for(int&l:g[y]){
            	if(a[l]>a[y]){continue;}
            	int u=find(l);
            	while(!q[u].empty()&&a[q[u].front()]<x.fi){
            		e[q[u].front()]=y;
            		q[u].pop();
            	}
                unite(y,l);
            }
        }
        for(int&y:x.se){
        	t[y]=s[find(y)];
        	q[find(y)].push(y);
        }
    }
    dp[0]=1;
    a[0]=-1;
    sort(v2.begin(),v2.end());
    for(int j=n-1;j>=0;j--){
    	int i=v2[j].se;
    	dp[i]=(a[e[i]]<=t[i]?dp[e[i]]:0);
    }for(int i=1;i<=n;i++){
    	cout<<dp[i];
    }cout<<'\n';
}
int32_t main(){
    int32_t T=1;//cin>>T;
    while(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...