Submission #659850

#TimeUsernameProblemLanguageResultExecution timeMemory
659850Savu_Stefan_CatalinRemittance (JOI19_remittance)C++14
55 / 100
1100 ms39460 KiB
#include <iostream> #include <algorithm> using namespace std; long long e[1005005],i,ok1,ok2,a[1005005],b[1005005],n,d[1005005],pp[1001],f[1000005],p; void make() { long long t=0,i; for (i=1;(i<=e[0]||t)&&i<=1005004;++i) { e[i]+=t; t=0; if (e[i]>=0) {t=e[i]/2; e[i]%=2;} else {t=(e[i]-1)/2; e[i]=(e[i]%2+2)%2;} } e[0]=i-1; if (i>1005000) e[0]=1,e[1]=-1; else while (e[e[0]]==0&&e[0]!=0) e[0]--; } int main() { ios_base::sync_with_stdio(NULL); cin.tie(0); cout.tie(0); cin>>n; for (i=1;i<=n;++i) { cin>>a[i]; if (a[i]!=0) ok1=1; cin>>b[i]; if (b[i]!=0) ok2=1; d[i]=a[i]-b[i]; e[i]=d[i]; } e[0]=n; if (!ok1&&!ok2) {cout<<"Yes"; return 0;} else if (!ok2) {cout<<"No"; return 0;} make(); while (true) { if (e[0]==0) { break;} if (e[e[0]]<0) {cout<<"No"; return 0;} if (e[1]==0) {pp[++pp[0]]=0; for (i=1;i<e[0];++i) e[i]=e[i+1]; e[e[0]]=0; e[0]--;} else { pp[++pp[0]]=1; for (i=1;i<=n;++i) e[i]--; e[0]=max(e[0],n); make(); } } reverse(pp+1,pp+pp[0]+1); for (i=1;i<=pp[0];++i) { if (pp[i]==0) p*=2; else p++; } f[n]=p; for (i=n;i>=2;--i) { f[i-1]=f[i]*2-d[i]; if (f[i-1]<0) {cout<<"No"; return 0;} } cout<<"Yes"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...