Submission #1867227
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
char s[N];int n,a[N];
struct segment_tree{
bool is[N*4];
#define lc x<<1
#define rc x<<1|1
void init(int x,int l,int r){
is[x]=1;
if (l==r) return;
int mid=(l+r)>>1;
init(lc,l,mid);
init(rc,mid+1,r);
}
void flip(int x,int l,int r,int p){
if (l==r) return void(is[x]^=1);
int mid=(l+r)>>1;
if (p>mid) flip(rc,mid+1,r,p);
else flip(lc,l,mid,p);
is[x]=is[lc]||is[rc];
}
int next(int x,int l,int r,int p){
if (r<p||!is[x]) return 0;
if (l==r) return l;
int mid=(l+r)>>1,ans=next(lc,l,mid,p);
return ans?ans:next(rc,mid+1,r,p);
}
}T[10];
int main()
{
scanf("%s",s+1);
n=strlen(s+1);
for (int i=1;i<=n;i++) a[i]=s[i]-'0';
a[n+1]=1e9;
for (int i=0;i<10;i++) T[i].init(1,1,n);
for (int i=1;i<=n;i++) T[a[i]].flip(1,1,n,i);
int ans=0;
for (int p=1;p<=n;){
ans++;
for (int i=p,now=0;i<=n;){
now=max(now,a[i]);
int j=T[now].next(1,1,n,i);
if (!j) j=n+1;
if (a[j]<now){
a[i]=0;
j=n;
while (a[j]==9){
T[9].flip(1,1,n,j);
T[0].flip(1,1,n,j);
a[j--]=0;
}
T[a[j]].flip(1,1,n,j);
a[j]++;
T[a[j]].flip(1,1,n,j);
break;
}
for (;i<j;a[i++]=0);
}
while (!a[p]) p++;
}
printf("%d\n",ans);
return 0;
}
Submission Info
Submission Time
2017-12-12 17:35:54+0900
Task
E - Increasing Numbers
User
FoolMike
Language
C++14 (GCC 5.4.1)
Score
1300
Code Size
1329 Byte
Status
AC
Exec Time
149 ms
Memory
21248 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:32:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%s",s+1);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
1300 / 1300
Status
Set Name
Test Cases
Sample
sample1.txt, sample2.txt, sample3.txt, sample4.txt
All
sample1.txt, sample2.txt, sample3.txt, sample4.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in4.txt, in5.txt, in500000.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt, sample4.txt
Case Name
Status
Exec Time
Memory
in1.txt
AC
7 ms
18816 KB
in10.txt
AC
145 ms
21248 KB
in11.txt
AC
55 ms
21248 KB
in12.txt
AC
132 ms
21248 KB
in13.txt
AC
135 ms
21248 KB
in14.txt
AC
135 ms
21248 KB
in15.txt
AC
136 ms
21248 KB
in16.txt
AC
140 ms
21248 KB
in17.txt
AC
53 ms
21120 KB
in18.txt
AC
127 ms
21248 KB
in19.txt
AC
110 ms
21248 KB
in2.txt
AC
133 ms
21248 KB
in20.txt
AC
61 ms
21248 KB
in21.txt
AC
124 ms
21248 KB
in22.txt
AC
125 ms
21248 KB
in23.txt
AC
125 ms
21248 KB
in24.txt
AC
147 ms
21248 KB
in25.txt
AC
146 ms
21248 KB
in26.txt
AC
120 ms
21248 KB
in27.txt
AC
88 ms
20608 KB
in28.txt
AC
125 ms
21248 KB
in29.txt
AC
124 ms
21248 KB
in3.txt
AC
124 ms
21248 KB
in30.txt
AC
125 ms
21248 KB
in31.txt
AC
130 ms
21248 KB
in4.txt
AC
126 ms
21248 KB
in5.txt
AC
59 ms
21248 KB
in500000.txt
AC
54 ms
21248 KB
in6.txt
AC
130 ms
21248 KB
in7.txt
AC
90 ms
20864 KB
in8.txt
AC
56 ms
21248 KB
in9.txt
AC
149 ms
21248 KB
sample1.txt
AC
5 ms
18688 KB
sample2.txt
AC
5 ms
18688 KB
sample3.txt
AC
5 ms
18688 KB
sample4.txt
AC
5 ms
18688 KB