Submission #1712573


Source Code Expand

#include<set>
#include<map>
#include<deque>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<climits>
#include<complex>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 1000000000
using namespace std;

const int maxn = 210000;

int n,m;
int A[maxn],B[maxn],C[maxn];

struct node{int x,i;};
inline bool operator <(const node x,const node y){return x.x<y.x;}
set<node>S;
set<node>::iterator it;

int p[maxn],q[maxn];
struct L{int l,i;};
vector<L>vl[maxn];
inline bool operator <(const L x,const L y){return x.l>y.l;}
priority_queue<L>q1;
struct R{int r,i;};
vector<R>vr[maxn];
inline bool operator <(const R x,const R y){return x.r<y.r;}
priority_queue<R>q2;

bool use[maxn],flag;
int ans[maxn],re;

int solve(const int k,const int ad){ return ans[k]==-1?-1:n-ans[k]+ad; }

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d",&A[i],&B[i]);
	for(int i=0;i<=n;i++) scanf("%d",&C[i]); sort(C,C+n+1);
	for(int i=0;i<=n;i++) if(!i||C[i]!=C[i-1]) S.insert((node){C[i],i});
	S.insert((node){inf+1,n+1});
	
	for(int i=1;i<=n;i++)
	{
		it=S.lower_bound((node){A[i],0});
		A[i]=(*it).i; p[A[i]]++;
		it=S.lower_bound((node){B[i],0});
		B[i]=(*it).i;
		
		if(A[i]>B[i])
		{
			swap(A[i],B[i]); B[i]--;
			vl[B[i]].push_back((L){A[i],i});
			vr[A[i]].push_back((R){B[i],i});
		}
	}
	for(int i=0;i<=n;i++) p[i]--;
	for(int i=1;i<=n+1;i++) p[i]+=p[i-1];
	
	int ad=0;
	for(int i=n+1;i>=0;i--)
	{
		ad+=q[i]; p[i]+=ad; q[i]=0;
		for(int j=0;j<vl[i].size();j++) q1.push(vl[i][j]);
		
		if(p[i]<-1&&i!=n+1)
		{
			while(!q1.empty()&&p[i]<-1)
			{
				const L now=q1.top(); q1.pop();
				if(now.l>i) break;
				use[now.i]=true;
				p[i]++; ad++; if(now.l) q[now.l-1]--;
				if(B[now.i]>i) q[i+1]++,q[B[now.i]+1]--;
				re++;
			}
			if(p[i]<-1) { flag=true; break; }
		}
	}
	if(flag) for(int i=0;i<=n+1;i++) ans[i]=-1;
	else
	{
		ad=0;
		for(int i=0;i<=n;i++) ad+=q[i],q[i]=0,p[i]+=ad;
		ad=0;
		for(int i=0;i<=n;i++)
		{
			ans[i]=re;
			ad+=q[i]; p[i]+=ad;
			for(int j=0;j<vr[i].size();j++) if(!use[vr[i][j].i]) q2.push(vr[i][j]);
			
			if(p[i]<0)
			{
				while(!q2.empty()&&p[i]<0)
				{
					const R now=q2.top(); q2.pop();
					if(now.r<i) break;
					ad++; p[i]++; q[now.r+1]--;
					re++;
				}
				if(p[i]<0)
				{
					for(int j=i+1;j<=n+1;j++) ans[j]=-1;
					break;
				}
			}
		}
		if(ans[n+1]!=-1) ans[n+1]=re;
	}
	
	scanf("%d",&m);
	while(m--)
	{
		int x,y; scanf("%d%d",&x,&y);
		it=S.lower_bound((node){x,0}); x=(*it).i;
		it=S.lower_bound((node){y,0}); y=(*it).i;
		printf("%d\n",max(solve(x,1),solve(y,0)));
	}
	
	return 0;
}

Submission Info

Submission Time
Task F - Two Faced Cards
User lichangdongtw
Language C++14 (GCC 5.4.1)
Score 2000
Code Size 2824 Byte
Status AC
Exec Time 327 ms
Memory 26612 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:49:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
                ^
./Main.cpp:50:49: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  for(int i=1;i<=n;i++) scanf("%d%d",&A[i],&B[i]);
                                                 ^
./Main.cpp:51:41: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  for(int i=0;i<=n;i++) scanf("%d",&C[i]); sort(C,C+n+1);
                                         ^
./Main.cpp:123:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&m);
                ^
./Main.cpp:126:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-W...

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 2000 / 2000
Status
AC × 3
AC × 61
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt, subtask_1_49.txt, subtask_1_50.txt, subtask_1_51.txt, subtask_1_52.txt, subtask_1_53.txt, subtask_1_54.txt, subtask_1_55.txt
Case Name Status Exec Time Memory
sample_01.txt AC 5 ms 13568 KB
sample_02.txt AC 5 ms 13568 KB
sample_03.txt AC 5 ms 13568 KB
subtask_1_01.txt AC 92 ms 18812 KB
subtask_1_02.txt AC 110 ms 20344 KB
subtask_1_03.txt AC 48 ms 16256 KB
subtask_1_04.txt AC 98 ms 22136 KB
subtask_1_05.txt AC 65 ms 16508 KB
subtask_1_06.txt AC 164 ms 22136 KB
subtask_1_07.txt AC 163 ms 24320 KB
subtask_1_08.txt AC 169 ms 24316 KB
subtask_1_09.txt AC 157 ms 23416 KB
subtask_1_10.txt AC 88 ms 20344 KB
subtask_1_11.txt AC 77 ms 19200 KB
subtask_1_12.txt AC 79 ms 18684 KB
subtask_1_13.txt AC 114 ms 19448 KB
subtask_1_14.txt AC 64 ms 18560 KB
subtask_1_15.txt AC 105 ms 21888 KB
subtask_1_16.txt AC 46 ms 15676 KB
subtask_1_17.txt AC 246 ms 26104 KB
subtask_1_18.txt AC 51 ms 18428 KB
subtask_1_19.txt AC 160 ms 20352 KB
subtask_1_20.txt AC 189 ms 23928 KB
subtask_1_21.txt AC 241 ms 22776 KB
subtask_1_22.txt AC 246 ms 26612 KB
subtask_1_23.txt AC 240 ms 22780 KB
subtask_1_24.txt AC 254 ms 26608 KB
subtask_1_25.txt AC 262 ms 26360 KB
subtask_1_26.txt AC 246 ms 26228 KB
subtask_1_27.txt AC 245 ms 25088 KB
subtask_1_28.txt AC 269 ms 25208 KB
subtask_1_29.txt AC 256 ms 26360 KB
subtask_1_30.txt AC 252 ms 26228 KB
subtask_1_31.txt AC 229 ms 25088 KB
subtask_1_32.txt AC 257 ms 25208 KB
subtask_1_33.txt AC 254 ms 26360 KB
subtask_1_34.txt AC 245 ms 26228 KB
subtask_1_35.txt AC 224 ms 25088 KB
subtask_1_36.txt AC 267 ms 25208 KB
subtask_1_37.txt AC 327 ms 26360 KB
subtask_1_38.txt AC 242 ms 26228 KB
subtask_1_39.txt AC 227 ms 25088 KB
subtask_1_40.txt AC 260 ms 25208 KB
subtask_1_41.txt AC 132 ms 17656 KB
subtask_1_42.txt AC 117 ms 16000 KB
subtask_1_43.txt AC 137 ms 19576 KB
subtask_1_44.txt AC 122 ms 16188 KB
subtask_1_45.txt AC 117 ms 15744 KB
subtask_1_46.txt AC 90 ms 17148 KB
subtask_1_47.txt AC 83 ms 14848 KB
subtask_1_48.txt AC 92 ms 18548 KB
subtask_1_49.txt AC 85 ms 15232 KB
subtask_1_50.txt AC 82 ms 14976 KB
subtask_1_51.txt AC 6 ms 13568 KB
subtask_1_52.txt AC 5 ms 13568 KB
subtask_1_53.txt AC 5 ms 13696 KB
subtask_1_54.txt AC 5 ms 13568 KB
subtask_1_55.txt AC 5 ms 13568 KB