or1ko's diary

日々を書きます

2291 Rotten Ropes

Javaのコード(236B)
1の補数を利用したところがおきにいり。

import java.util.*;
class Main{
  static{
    Scanner s=new Scanner(System.in);
    for(int t=s.nextInt(),n,k,c,a[];t-->0;System.out.println(n)){
      for(a=new int[k=n=s.nextInt()];n-->0;)
        a[n]=-s.nextInt();
      for(Arrays.sort(a);k-->0;)
        n=n>(c=a[k]*~k)?n:c;
    }
  }
}

Javaのチートコード(238B)

import java.util.*;
class Main{
  static{
    Scanner s=new Scanner(System.in);
    for(int t=s.nextInt(),n,a[],c=0,k;t-->0;System.out.println(c)){
      for(a=new int[k=n=s.nextInt()];n-->0;)
        a[n]=-s.nextInt();
      for(Arrays.sort(a);k-->0;)
        c=c>(n=a[k]*~k)?c:n;
    }
  }
}

C言語で盛り上がっていて、寂しいので書けないC言語を書いてみたコード。

#include<stdio.h>
int intcmp(const void *a, const void *b)
{
	return *((int*)a) - *((int*)b);
}
main(){
	int t,n,k,c;
	scanf("%d",&t);
	for(;t-->0;)
	{
		scanf("%d",&k);
		n=k;
		int a[k];
		for(;n-->0;){
			scanf("%d",&a[n]);
			a[n]*=-1;
		}
		qsort(a,k,sizeof(int),intcmp);
		for(;k-->0;)
			n=n>(c=a[k]*~k)?n:c;
		printf("%d\n",n);
	}
}