Submission #338054

# Submission time Handle Problem Language Result Execution time Memory
338054 2020-12-22T11:30:43 Z Nimbostratus Restore Array (RMI19_restore) C++17
0 / 100
3 ms 492 KB
#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;
	//if(N <= 18)
	//{
	//	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<(1<<N);i++)
	//	{
	//		string cur;
	//		for(int k=0;k<N;k++)
	//			cur = char('0' + !!(i&(1<<k))) + cur;
	//		int pre[cur.size()+5];
	//		pre[0] = (cur[0] - '0');
	//		for(int i=1;i<cur.size();i++)
	//			pre[i] = pre[i-1] + (cur[i] - '0');
	//		bool flag = 1;
	//		for(int i=0;i<M and flag;i++)
	//		{
	//			int l,r,k,v;
	//			tie(l,r,k,v) = q[i];
	//			//cout << l << " " << r << " " << k << " " << v << endl;
	//			int onecnt = pre[r] - (l == 0 ? 0 : pre[l-1]);
	//			if(v == 0)
	//				flag = flag and ((r-l+1)-onecnt >= k); 
	//			else
	//				flag = flag and ((r-l+1)-onecnt < k);
	//		}
	//		if(flag)
	//		{
	//			for(int i=0;i<cur.size();i++)
	//				cout << int(cur[i]-'0') << " ";
	//			return 0;
	//		}
	//	}
	//	cout << -1 << endl;
	//	return 0;
	//}
	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)
			for(int i=l;i<=r;i++)
				ans[i] = '1';
	}
	for(int i=0;i<M;i++)
	{
		int l,r,k,v;
		tie(l,r,k,v) = q[i];
		if(v == 0)
		{
			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(ans[i] == '1')
				{
					cout << -1 << endl;
					return 0;
				}
			}
			if(!flag)
			{
				cout << -1 << endl;
				return 0;
			}
		}
	}
	for(int i=0;i<N;i++)
		cout << (ans[i] == '2' ? '1' : ans[i]) << " ";
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 492 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 492 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -