Submission #1043501

#TimeUsernameProblemLanguageResultExecution timeMemory
1043501MalixWall (IOI14_wall)C++14
8 / 100
504 ms9040 KiB
#include "wall.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> tii; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define MP make_pair #define LSOne(s) ((s)&(-s)) ll INF=1e18+10; int inf=1e9+10; ll M=1e9+7; void buildWall(int n, int k, int t[], int l[], int r[], int h[], int finalHeight[]){ vi ans(n,0); int m=sqrt(n); vi b(m+2,0),c(m+2,inf); REP(i,0,k){ int x=l[i]/m; int y=r[i]/m; REP(j,x+1,y){ if(t[i]==1){ b[j]=max(b[j],h[i]); c[j]=max(c[j],h[i]); } else{ c[j]=min(c[j],h[i]); b[j]=min(b[j],h[i]); } } REP(j,x*m,min(n,x*m+m)){ if(c[x]!=0)ans[j]=min(ans[j],c[x]); if(b[x]!=0)ans[j]=max(ans[j],b[x]); } b[x]=0;c[x]=inf; REP(j,y*m,min(n,y*m+m)){ if(c[y]!=0)ans[j]=min(ans[j],c[y]); if(b[y]!=0)ans[j]=max(ans[j],b[y]); } b[y]=0;c[y]=inf; REP(j,l[i],min(min(n,x*m+m),r[i]+1)){ if(t[i]==1)ans[j]=max(ans[j],h[i]); else ans[j]=min(ans[j],h[i]); } REP(j,max(l[i],y*m),r[i]+1){ if(t[i]==1)ans[j]=max(ans[j],h[i]); else ans[j]=min(ans[j],h[i]); } } REP(j,0,n){ if(c[j/m]!=0)ans[j]=min(ans[j],c[j/m]); if(b[j/m]!=0)ans[j]=max(ans[j],b[j/m]); } REP(i,0,n)finalHeight[i]=ans[i]; return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...