2 条题解
-
0
#define re register int #define il inline #define ll long long using namespace std; const int inf=1e9; il int read(){ char c=getchar();int z=0,f=1; while(c!='-'&&(c>'9'||c<'0')) c=getchar(); if(c=='-') f=-1,c=getchar(); while(c>='0'&&c<='9') z=(z<<1)+(z<<3)+c-'0',c=getchar(); return z*f; } int R,n; int mp[1100002],a[1100002]; int ans; struct ANS{ int x,y; }q[1100002]; il void dfs(int l,int now,int r,int sum){ if(r>=R) return ; if(mp[now]<l) return ; if(r==mp[now]&&sum>1&&sum==r-l+1) { q[++ans].x=l,q[ans].y=r,R=min(R,r); return ; } dfs(l,now+1,max(r,mp[now+1]),sum+1); } int main (){ //Fuyuki是我们的红太阳 freopen("empodia.in","r",stdin); freopen("empodia.out","w",stdout); n=read();R=n+1; for(re i=1;i<=n;i++) a[i]=read(),mp[a[i]]=i; for(re i=n-2;i>=1;i--) dfs(i,a[i],i,1); cout<<ans<<'\n'; for(re i=ans;i>=1;i--) cout<<q[i].x<<' '<<q[i].y<<'\n'; return 0; } -
0
#include <bits/stdc++.h> #define re register int #define il inline #define ll long long using namespace std; const int inf=1e9; il int read(){ char c=getchar();int z=0,f=1; while(c!='-'&&(c>'9'||c<'0')) c=getchar(); if(c=='-') f=-1,c=getchar(); while(c>='0'&&c<='9') z=(z<<1)+(z<<3)+c-'0',c=getchar(); return z*f; } int R,n; int mp[1100002],a[1100002]; int ans; struct ANS{ int x,y; }q[1100002]; il void dfs(int l,int now,int r,int sum){ if(r>=R) return ; if(mp[now]<l) return ; if(r==mp[now]&&sum>1&&sum==r-l+1) { q[++ans].x=l,q[ans].y=r,R=min(R,r); return ; } dfs(l,now+1,max(r,mp[now+1]),sum+1); } int main (){ //Fuyuki是我们的红太阳 freopen("empodia.in","r",stdin); freopen("empodia.out","w",stdout); n=read();R=n+1; for(re i=1;i<=n;i++) a[i]=read(),mp[a[i]]=i; for(re i=n-2;i>=1;i--) dfs(i,a[i],i,1); cout<<ans<<'\n'; for(re i=ans;i>=1;i--) cout<<q[i].x<<' '<<q[i].y<<'\n'; return 0; }
- 1
信息
- ID
- 6639
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者