Submission #98073

# Submission time Handle Problem Language Result Execution time Memory
98073 2019-02-20T13:41:59 Z dndhk None (JOI16_worst_reporter2) C++14
0 / 100
8 ms 5120 KB
#include <bits/stdc++.h>

#define pb push_back
#define all(v) ((v).begin(), (v).end())
#define sortv(v) sort(all(v))
#define sz(v) ((int)(v).size())
#define uniqv(v) (v).erase(unique(all(v)), (v).end())
#define umax(a, b) (a)=max((a), (b))
#define umin(a, b) (a)=min((a), (b))
#define FOR(i,a,b) for(int i = (a); i <= (b); i++)
#define rep(i,n) FOR(i,1,n)
#define rep0(i,n) FOR(i,0,(int)(n)-1)
#define FI first
#define SE second
#define INF 2000000000
#define INFLL 1000000000000000000LL


using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAX_N = 200000;
int N;
vector<pii> v1, v2;
int idx[MAX_N+1];
vector<int> g[MAX_N+1];
int cnt[MAX_N+1];
int chk[MAX_N+1];
int ans;

bool match(int x, int y){
	for(int i = 0; i<x; i++){
		if(chk[i])	continue;
		if(idx[i]>=y){
			int sum = 0;
			for(int j=0; j<=idx[i]; j++){
				sum+=cnt[j];
			}
			if(sum==0 || sum==1)	return false;
		}
	}return true;
}

int main(){
	scanf("%d", &N);	for(int i=0; i<N; i++)	cnt[i]++;
	ans = N;
	for(int i=0 ;i<N; i++){
		int a, b; scanf("%d%d", &a, &b);
		v1.push_back({a, b});
	}for(int i=0; i<N; i++){
		int a, b; scanf("%d%d", &a, &b);
		v2.push_back({a, b});
	}
	for(int i=0; i<N; i++){
		if(i==0)	idx[i] = 0;
		else	idx[i] = idx[i-1];
		while(idx[i]!=N-1 && v2[idx[i]+1].SE >= v1[i].SE){
			idx[i]++;
		}
	}
	int index = 0;
	for(int i=0; i<N; i++){
		while(index<N && v2[index].SE >= v1[i].SE){
			g[v2[index].FI].push_back(index); index++;
		}   
		if(!g[v1[i].FI].empty()){
			int k = g[v1[i].FI].back();
			//cout<<i<<' '<<k<<endl;
			if(match(i, k)){
				cout<<i<<' '<<k<<endl;
				cnt[k]--; chk[i] = true; ans--;
				g[v1[i].FI].pop_back();
			}
		}
	}
	cout<<ans;
	return 0;
}

Compilation message

worst_reporter2.cpp: In function 'int main()':
worst_reporter2.cpp:47:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &N); for(int i=0; i<N; i++) cnt[i]++;
  ~~~~~^~~~~~~~~~
worst_reporter2.cpp:50:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int a, b; scanf("%d%d", &a, &b);
             ~~~~~^~~~~~~~~~~~~~~~
worst_reporter2.cpp:53:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int a, b; scanf("%d%d", &a, &b);
             ~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 5120 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 5120 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 5120 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 5120 KB Output isn't correct
2 Halted 0 ms 0 KB -