标签:
第一行一个整数n,表示序列的长度(0 < n <=1000000) 第二行n个整数,表示第二种方法的记录。
一行,空格分隔的n个整数,表示第一种表示方法的序列。
5 0 0 0 2 4
2 4 5 5 5
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; #define Max 1000010 int a[Max]; int c[Max]; int v[Max]; int scan() { int res=0,flag=0; char ch; if((ch=getchar())==‘-‘)flag=1; else if(ch>=‘0‘&&ch<=‘9‘)res=ch-‘0‘; while((ch=getchar())>=‘0‘&&ch<=‘9‘)res=res*10+(ch-‘0‘); return flag?-res:res; } void out(int a) { if(a<0){putchar(‘-‘);a=-a; } if(a>=10)out(a/10); putchar(a%10+‘0‘); } int main() { int n; int end; scanf("%d",&n); end=n; for(int i=1;i<=n;i++) { a[i]=scan(); } for(int i=n;i>=1;i--) { int t=end-a[i]; c[i]=end; v[t]=1; for(;v[end]==1;) { end--; } } for(int i=1;i<=n;i++) { out(c[i]);putchar(‘ ‘); } return 0; }
标签:
原文地址:http://www.cnblogs.com/duanyuanzhi/p/4943547.html