Submission #28987

#TimeUsernameProblemLanguageResultExecution timeMemory
28987tlwpdusTaxis (POI13_tak)C++11
100 / 100
196 ms5924 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll m, d; int n;
ll x[500100];

int main() {
	int i;

	scanf("%lld%lld%d",&m,&d,&n); m*=2; d*=2;
	for (i=0;i<n;i++) {scanf("%lld",&x[i]);x[i]*=2;}
	sort(x,x+n);
	int idx = lower_bound(x,x+n,m-d)-x;
	if (idx==n) {
		printf("0\n"); return 0;
	}
	ll loc = (d-(x[idx]-(m-d))/2), cur = 0; int cnt = 0;
	for (i=n-1;i>=0;i--) {
		if (cur>=m) {
			printf("%d\n",cnt);
			return 0;
		}
		if (cur>=loc) {
			printf("%d\n",cnt+1);
			return 0;
		}
		if (i==idx) continue;
		if (d-cur>=x[i]) {
			printf("0\n");
			return 0;
		}
		cur += (x[i]-(d-cur)); cnt++;
	}
	if (cur>=m) {
		printf("%d\n",cnt);
		return 0;
	}
	if (cur>=loc) {
		printf("%d\n",cnt+1);
		return 0;
	}
	printf("0\n");

    return 0;
}

Compilation message (stderr)

tak.cpp: In function 'int main()':
tak.cpp:13:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld%d",&m,&d,&n); m*=2; d*=2;
                              ^
tak.cpp:14:40: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for (i=0;i<n;i++) {scanf("%lld",&x[i]);x[i]*=2;}
                                        ^
#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...
#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...