Submission #1210989

#TimeUsernameProblemLanguageResultExecution timeMemory
1210989santi3223Wall (IOI14_wall)C++20
24 / 100
707 ms30768 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll int
#define vl vector<ll>
#define vb vector<bool>
#define pb push_back
#define ff(aa, bb, cc) for(ll aa = bb; aa < cc; aa++)
#define pll pair<ll, ll>
#define fi first
#define se second
#define ed "\n"
#define all(aaa) aaa.begin(), aaa.end()
#define rall(aaa) aaa.rbegin(), aaa.rend()
ll MOD = 1e9+7;

void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
	ff(i, 0, n){
		finalHeight[i] = 0;
	}
	vector<vl> ad(n+1), re(n+1);
	ff(i, 0, k){
		if(op[i] == 1){
			ad[left[i]].pb(i);
			re[right[i]+1].pb(i);
		}
	}
	set<pll> calc;
	calc.insert({0, -1});
	ff(i, 0, n){
		ff(j, 0, ad[i].size()){
			calc.insert({height[ad[i][j]], ad[i][j]});
		}
		ff(j, 0, re[i].size()){
			calc.erase({height[re[i][j]], re[i][j]});
		}
		auto x = calc.end();
		x--;
		finalHeight[i] = x->fi;
	}
	ad = vector<vl>(n+1);
	re = vector<vl>(n+1);
	ff(i, 0, k){
		if(op[i] == 2){
			ad[left[i]].pb(i);
			re[right[i]+1].pb(i);
		}
	}
	calc.clear();
	calc.insert({1e9, -1});
	ff(i, 0, n){
		ff(j, 0, ad[i].size()){
			calc.insert({height[ad[i][j]], ad[i][j]});
		}
		ff(j, 0, re[i].size()){
			calc.erase({height[re[i][j]], re[i][j]});
		}
		auto x = calc.begin();
		finalHeight[i] = min(finalHeight[i], x->fi);
	}
	/*ff(i, 0, n){
		cout << finalHeight[i] << " ";
	}*/
}

/*
int main(){
	ll n, k;
	cin >> n >> k;
	ll a[n], b[n], c[n], d[n];
	ff(i, 0, k){
		cin >> a[i] >> b[i] >> c[i] >> d[i];
	}
	ll x[n];
	buildWall(n, k, a, b, c, d, x);
}
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...