Submission #40997

# Submission time Handle Problem Language Result Execution time Memory
40997 2018-02-10T23:30:56 Z yusufake Taxis (POI13_tak) C++
100 / 100
175 ms 4580 KB
#include<bits/stdc++.h>

using namespace std;

#define _   int v, int tl, int tr, int l, int r, int h
#define tm  (tl+tr >> 1)
#define sol v+v,tl,tm,l,r,h
#define sag v+v+1,tm+1,tr,l,r,h

#define mp make_pair
#define pb push_back
#define st first
#define nd second

typedef long long ll;
typedef pair < int , int > pp;

const int mod = 1e9 + 7;
const int N   = 5e5 + 5;

ll A[N],m,d,n,i,j,x;

void fail() { cout << 0; exit(0); }

int main(){
	cin >> m >> d >> n;
	for(i=1;i<=n;i++) scanf("%lld", &A[i]);
	sort(A+1 , A+n+1);
	reverse(A+1 , A+n+1);
    if(A[1] < m-d) fail();
	for(i=1;i<=n && A[i] >= m-d;i++){
        if(A[i] < d-x) fail();
		x += A[i] - max(0LL , d - x);
		if(x >= m) { cout << i; return 0; }	
    }
    
    i--;
	x = 0;
    for(j=1;j<i;j++){
		x += A[j] - max(0LL , d - x);
	}
	for(j=i+1;j<=n;j++){
		if(A[j] < d-x) fail();
        x += A[j] - max(0LL , d - x);
        if(x+A[i]-max(0LL,d-x) >= m) { cout << j; return 0; }
	}
	
	cout << 0;	
	return 0;
}

Compilation message

tak.cpp: In function 'int main()':
tak.cpp:27:40: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(i=1;i<=n;i++) scanf("%lld", &A[i]);
                                        ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 252 KB Output is correct
2 Correct 2 ms 480 KB Output is correct
3 Correct 2 ms 480 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 480 KB Output is correct
2 Correct 1 ms 480 KB Output is correct
3 Correct 2 ms 532 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 532 KB Output is correct
2 Correct 2 ms 604 KB Output is correct
3 Correct 2 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 608 KB Output is correct
2 Correct 3 ms 608 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 18 ms 1004 KB Output is correct
2 Correct 5 ms 1004 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 21 ms 1108 KB Output is correct
2 Correct 25 ms 1200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 37 ms 1688 KB Output is correct
2 Correct 76 ms 2344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 96 ms 2924 KB Output is correct
2 Correct 115 ms 3120 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 161 ms 4464 KB Output is correct
2 Correct 135 ms 4464 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 106 ms 4464 KB Output is correct
2 Correct 175 ms 4580 KB Output is correct