Submission #912998

#TimeUsernameProblemLanguageResultExecution timeMemory
912998Muhammad_AneeqJousting tournament (IOI12_tournament)C++17
17 / 100
1029 ms3172 KiB
#include <iostream>
#include <vector>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds; 
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> 
int GetBestPosition(int N, int C, int R, int K[], int S[], int E[])
{
	int ans=0,pos=0;
	ordered_set s;
	for (int i=0;i<N;i++)
	{
		s={};
		for (int j=0;j<N;j++)
			s.insert(j);
		int z=0;
		for (int j=0;j<C;j++)
		{
			int ma=0;
			bool w=0;
			for (int k=S[j];k<=E[j];k++)
			{
				int z=*s.find_by_order(k);
				int f=0;
				if (z==i)
				{
					w=1;
					f=R;
				}
				else
					f=K[z-(z>i)];
				ma=max(ma,f);
			}
			for (int k=E[j];k>=S[j];k--)
			{
				auto z=s.find_by_order(k);
				int f=0;
				if (*z==i)
					f=R;
				else
					f=K[*z-(*z>i)];
				if (ma==f)
					continue;
				s.erase(z);
			}
			if (w)
			{
				if (ma==R)
					z++;
				else
					break;
			}
		}
		if (z>ans)
		{
			ans=z;
			pos=i;
		}
	}
	return pos;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...