제출 #1204103

#제출 시각아이디문제언어결과실행 시간메모리
1204103Muhammad_AneeqArranging Tickets (JOI17_arranging_tickets)C++20
10 / 100
180 ms448 KiB
#include <iostream>
using namespace std;
int const N=3e3+10;
int n,m;
int a[N],b[N],c[N];
// int St[4*N]={};
// int lazy[4*N]={};
// int fen[N]={};
// void push(int i)
// {
// 	for (int j=2*i;j<=2*i+1;j++)
// 	{
// 		lazy[j]+=lazy[i];
// 		St[j]+=lazy[i];
// 	}
// 	lazy[i]=0;
// }
// void reset(int i,int st,int en)
// {
// 	St[i]=lazy[i]=0;
// 	if (st==en)
// 		return;
// 	int mid=(st+en)/2;
// 	reset(i*2,st,mid);
// 	reset(i*2+1,mid+1,en);
// }
// void update(int i,int st,int en,int l,int r,int val)
// {
// 	if (l>r)
// 		return;
// 	if (st>=l&&en<=r)
// 	{
// 		lazy[i]+=val;
// 		St[i]+=val;
// 		return;
// 	}
// 	if (st>r||en<l)
// 		return;
// 	int mid=(st+en)/2;
// 	push(i);
// 	update(i*2,st,mid,l,r,val);
// 	update(i*2+1,mid+1,en,l,r,val);
// 	St[i]=max(St[i*2],St[i*2+1]);
// }
// int get(int i,int st,int en,int l,int r)
// {
// 	if (l>r)
// 		return 0;
// 	if (st>=l&&en<=r)
// 		return St[i];
// 	if (st>r||en<l)
// 		return 0;
// 	push(i);
// 	int mid=(st+en)/2;
// 	return max(get(i*2,st,mid,l,r),get(i*2+1,mid+1,en,l,r));
// }
inline void solve()
{
	cin>>n>>m;
	for (int i=0;i<m;i++)
	{
		cin>>a[i]>>b[i]>>c[i];
		a[i]--;b[i]--;
	}
	int mx=1e3;
	int cnt[n]={};
	for(int i=0;i<(1<<m);i++)
	{
		for (int i=0;i<n;i++)
			cnt[i]=0;
		int mf=0;
		for (int j=0;j<m;j++)
		{
			if((1<<j)&i)
			{
				if (a[j]<b[j])
				{
					for (int k=a[j];k<b[j];k++)
						cnt[k]++;
				}
				else
				{
					for (int k=a[j];k<n;k++)
						cnt[k]++;
					for (int k=0;k<b[j];k++)
						cnt[k]++;
				}
			}
			else
			{
				if (a[j]<b[j])
				{
					for (int k=0;k<a[j];k++)
						cnt[k]++;
					for (int k=b[j];k<n;k++)
						cnt[k]++;
				}
				else
				{
					for (int k=b[j];k<a[j];k++)
						cnt[k]++;
				}
			}
		}
		for (int j=0;j<n;j++)
			mf=max(mf,cnt[j]);
		mx=min(mx,mf);
	}
	cout<<mx<<endl;
	// for (int i=0;i<m;i++)
	// {
	// 	if (a[i]<b[i])
	// 	{
	// 		int z=get(1,0,n-1,a[i],b[i]-1);
	// 		int f=max(get(1,0,n-1,0,a[i]-1),get(1,0,n-1,b[i],n-1));
	// 		if (z==f)
	// 		{
	// 			if (b[i]-a[i]>=a[i]+(n-1-b[i]+1))
	// 			{
	// 				cout<<i<<endl;
	// 				update(1,0,n-1,a[i],b[i]-1,c[i]);
	// 			}
	// 			else
	// 			{
	// 				update(1,0,n-1,0,a[i]-1,c[i]);
	// 				update(1,0,n-1,b[i],n-1,c[i]);
	// 			}
	// 		}
	// 		else
	// 		{
	// 			if (z<f)
	// 			{
	// 				cout<<i<<endl;
	// 				update(1,0,n-1,a[i],b[i]-1,c[i]);
	// 			}
	// 			else
	// 			{
	// 				update(1,0,n-1,0,a[i]-1,c[i]);
	// 				update(1,0,n-1,b[i],n-1,c[i]);
	// 			}
	// 		}
	// 	}
	// 	else
	// 	{
	// 		int z=get(1,0,n-1,b[i],a[i]-1);
	// 		int f=max(get(1,0,n-1,0,b[i]-1),get(1,0,n-1,a[i],n-1));
	// 		if (z==f)
	// 		{
	// 			if (a[i]-b[i]>b[i]+(n-1-a[i]+1))
	// 				update(1,0,n-1,b[i],a[i]-1,c[i]);
	// 			else
	// 			{
	// 				update(1,0,n-1,0,b[i]-1,c[i]);
	// 				update(1,0,n-1,a[i],n-1,c[i]);
	// 			}
	// 		}
	// 		else
	// 		{
	// 			if (z<f)
	// 				update(1,0,n-1,b[i],a[i]-1,c[i]);
	// 			else
	// 			{
	// 				update(1,0,n-1,0,b[i]-1,c[i]);
	// 				update(1,0,n-1,a[i],n-1,c[i]);
	// 			}
	// 		}
	// 	}
	// }
	// for (int i=0;i<n;i++)
	// {
	// 	cout<<get(1,0,n-1,i,i)<<endl;
	// }
	// cout<<get(1,0,n-1,0,n-1)<<endl;
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    for (int i=1;i<=t;i++)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...