Submission #411628

#TimeUsernameProblemLanguageResultExecution timeMemory
411628RGBBBread First Search (CCO21_day2problem2)C++14
25 / 25
63 ms13536 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; typedef pair<int,int>pp; const int MAX=200000; int n,m,outp,adj[MAX],leftmost[MAX],diff[MAX]; vector<int>best[MAX]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>m; for(int i=0;i<n;i++)adj[i]=(1<<30); for(int i=0;i<n;i++)leftmost[i]=(1<<30); for(int i=0;i<m;i++){ int a,b; cin>>a>>b; a--; b--; adj[max(a,b)]=min(adj[max(a,b)],min(a,b)); } leftmost[n-1]=min(adj[n-1],n-2); for(int i=n-2;i>=0;i--)leftmost[i]=min(leftmost[i+1],min(adj[i],i-1)); for(int i=0;i<n;i++){ if(adj[i]==(1<<30))continue; diff[adj[i]+1]++; if(i+1<n)diff[i+1]--; } for(int i=1;i<n;i++)diff[i]+=diff[i-1]; int cur=0; for(int i=n-1;i>=1;i--){ for(int y:best[i])cur=max(cur,y); best[leftmost[i]].push_back(cur+diff[i]); if(i==1)cout<<n-1-cur-diff[i]<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...