This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |