1 solutions
-
0
C :
#include<stdio.h> #include<stdlib.h> int a[30001]; int ans,w,len,l,r,n; int cmp(const void*a,const void*b) { int c=*(int*)a,d=*(int*)b; if (c<d) return -1; if (c>d) return 1; return 0; } int main() { scanf("%d%d",&w,&n); for (int i=1;i<=n;++i) scanf("%d",&a[i]); qsort(a,n+1,sizeof(int),cmp); int t=w-a[1]; len=n; while (a[len]>t) --len; ans=n-len; l=1;r=len; while (l<=r) if (l==r) { ++ans; break; } else if (a[l]+a[r]<=w) { ++ans; ++l; --r; } else { ++ans; --r; } printf("%d\n",ans); return 0; }C++ :
#include <iostream> #include <algorithm> using namespace std; int a[30010]; int main() { int n, w, count=0; cin>>w>>n; for (int i=0; i<n; i++) cin>>a[i]; sort(a, a+n); for (int i=n-1, j=0; i>=j; i--) { if (a[i]==w) count++; else { if (a[i]+a[j]<=w) { count++; j++; } else count++; } } cout<<count<<endl; return 0; }
- 1
Information
- ID
- 16301
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By