Submission #338060

#TimeUsernameProblemLanguageResultExecution timeMemory
338060NimbostratusRestore Array (RMI19_restore)C++17
38 / 100
67 ms640 KiB
#include <bits/stdc++.h>
#define mt make_tuple
using namespace std;
typedef long long ll;
const ll INF = 1e15;
int N,M;
string ans;
vector<tuple<int,int,int,int>> q; 

int32_t main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	//freopen("in","r",stdin);
	//freopen("out","w",stdout);
	cin >> N >> M;
	for(int i=0;i<N;i++) ans += '2';
	q.resize(M);
	for(int i=0;i<M;i++)
	{
		int l,r,k,v;
		cin >> l >> r >> k >> v;
		q[i] = mt(l,r,k,v);
	}
	for(int i=0;i<M;i++)
	{
		int l,r,k,v;
		tie(l,r,k,v) = q[i];
		if(v == 1 and k == 1)
			for(int i=l;i<=r;i++)
				ans[i] = '1';
		if(v == 0 and k == r-l+1)
			for(int i=l;i<=r;i++)
				if(ans[i] == '1')
				{
					cout << -1 << endl;
					return 0;
				}
				else
					ans[i] = '0';
	}
	for(int i=0;i<M;i++)
	{
		int l,r,k,v;
		tie(l,r,k,v) = q[i];
		if(v == 0 and k == 1)
		{
			bool flag = 0;
			for(int i=l;i<=r;i++)
			{
				if(ans[i] == '0')
					flag = 1;
				if(ans[i] == '2' and !flag)
				{
					ans[i] = '0';
					flag = 1;
				}
			}
			if(!flag)
			{
				cout << -1 << endl;
				return 0;
			}
		}
		if(v == 1 and k == r-l+1)
		{
			bool flag = 0;
			for(int i=l;i<=r;i++)
			{
				if(ans[i] == '1') flag = 1;
				if(ans[i] == '2' and !flag)
				{
					ans[i] = '1';
					flag = 1;
				}
			}
			if(!flag)
			{
				cout << -1 << endl;
				return 0;
			}
		}
	}
	for(int i=0;i<N;i++)
		cout << (ans[i] == '2' ? '1' : ans[i]) << " ";
}

Compilation message (stderr)

restore.cpp: In function 'int32_t main()':
restore.cpp:33:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
   33 |   if(v == 0 and k == r-l+1)
      |     ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...