1 solutions
-
0
C++ :
#include<iostream> #include<cstdlib> #include<algorithm> using namespace std; int main() { int w,n,a[30001],number=0,sheng=0; cin>>w>>n; for(int i=1;i<=n;++i) cin>>a[i]; sort(a+1,a+n+1); int s=0,h=n+1; while(1) { s++; h--; if(a[s]+a[h]<=w) number++; if(a[s]+a[h]>w) { --s; number++; } if(s==h) break; if(s>h) { number--; break; } } cout<<number; //system("pause"); return 0; }
Pascal :
var w,n,i,x,ans:longint; a:array[0..100000]of longint; procedure qsort(l,r:longint); var i,j,t,mid:longint; begin i:=l;j:=r; mid:=a[(i+j)div 2]; while i<=j do begin while a[i]>mid do inc(i); while a[j]<mid do dec(j); if i<=j then begin t:=a[i];a[i]:=a[j];a[j]:=t; inc(i);dec(j); end; end; if l<j then qsort(l,j); if i<r then qsort(i,r); end; begin readln(w); readln(n); for i:=1 to n do readln(a[i]); qsort(1,n); x:=n; ans:=0; for i:=1 to n do begin if i>x then break; if a[i]+a[x]<=w then begin inc(ans);dec(x);end else inc(ans); end; writeln(ans); end.
Java :
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int max = in.nextInt(); int n = in.nextInt(), count = 0, l = 0, r = n-1; int[] number = new int[n]; for ( int i = 0; i < number.length; i++ ) number[i] = in.nextInt(); Arrays.sort(number); while ( l <= r ) { if ( number[l] + number[r] <= max ) l++; r--; count++; } System.out.println(count); } }
- 1
Information
- ID
- 696
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By