Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3)
12986 단어 Codeforces
아 이 디 어 는 첫 번 째 입력 을 처리 한 후에 두 번 째 입력 부터 시작 하 는 것 입 니 다. 현재 입력 이 이전 입력 보다 크 면 출력 은 이 입력 과 같 고 사용 되 지 않 은 숫자 를 c 에 존재 하 며 end 는 배열 의 끝 을 가리 키 며 숫자 를 저장 합 니 다.현재 입력 이 이전 입력 과 같다 면 c 배열 의 맨 앞 에 사용 되 지 않 은 숫자 를 출력 합 니 다. begin 은 배열 의 시작 을 가리 키 며 숫자 를 가 져 오 는 데 사 용 됩 니 다.마지막 으로 함께 출력 을 시작 하면 시간 이 초과 되 고 순환 하면 서 출력 이 지나 갑 니 다.
#include
using namespace std;
typedef long long ll;
bool flag;
int a[100010];
int b[100010];
int c[100010];
int main(){
ios::sync_with_stdio(false);
cout.tie(NULL);
int t;
cin>>t;
while(t--){
int n;
cin>>n;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
flag=true;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]<i){
flag=false;
string s;
getline(cin,s);// continue
break;
}
}
int num;
int begin=1;
int end=1;
if(flag==false){
cout<<"-1";
}
else{
b[1]=a[1];
cout<<b[1]<<' ';
if(a[1]>1){
for(int i=1;i<a[1];i++){
c[i]=i;
}
begin=1;
end=a[1]-1;
}
else end=0;
for(int i=2;i<=n;i++){
if(a[i-1]<a[i]){
b[i]=a[i];
cout<<b[i]<<' ';
for(int j=a[i-1]+1;j<a[i];j++){
c[end+j-a[i-1]]=j;
}
end+=a[i]-a[i-1]-1;
}
else{
b[i]=c[begin];
cout<<b[i]<<' ';
begin++;
}
}
}
cout<<endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Codeforces 1287C Garland제목 링크:Codeforces 1287C Garland 사고방식: 우리기dp[i][j][0]와 dp[i][j][1]는 각각 i개가 홀수/짝수이고 앞의 i개 안에 j개의 짝수가 있는 상황에서 i개의 최소 복잡도.첫 번...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.