結果
問題 | No.1416 ショッピングモール |
ユーザー |
|
提出日時 | 2021-03-05 22:37:06 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 147 ms / 1,000 ms |
コード長 | 7,643 bytes |
コンパイル時間 | 2,872 ms |
コンパイル使用メモリ | 86,992 KB |
実行使用メモリ | 42,880 KB |
最終ジャッジ日時 | 2024-10-07 03:20:28 |
合計ジャッジ時間 | 5,227 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
//Author : Debojyoti Mandal//Some of the methods are copied from GeeksforGeeks Websiteimport java.util.*;import java.lang.*;import java.io.*;public class Main{static PrintWriter out=new PrintWriter(System.out);static Reader sc=new Reader();//static FastReader sc=new FastReader(System.in);public static void main (String[] args) throws java.lang.Exception{try{// long n=sc.nextLong();// String s=sc.next();// boolean flag=true;// flag(flag);// ArrayList<Long> al=new ArrayList<>();int t=1;while(t-->0){long n=sc.nextLong();long a[]=new long[(int)n];for(int i=0;i<n;i++){a[i]=sc.nextLong();}sort(a);long ans=0;long c=0;long sp=1;long temp=1;for(int i=(int)(n-1);i>=0;i--){if(sp>0){sp--;ans+=(c*a[i]);}else{temp*=2;sp=temp;sp--;c++;ans+=(c*a[i]);}}out.println(ans);}out.flush();out.close();}catch(Exception e){}}//Soluntion Ends Here.............................................ereH sdnE noitnuloS//Template//static void flag(boolean flag){out.println(flag ? "YES" : "NO");out.flush();}// Map<Long,Long> map=new HashMap<>();// for(int i=0;i<n;i++)// {// if(!map.containsKey(a[i]))// map.put(a[i],1);// else// map.replace(a[i],map.get(a[i])+1);// }// Set<Map.Entry<Long,Long>> hmap=map.entrySet();// for(Map.Entry<Long,Long> data : hmap)// {// }static void sort(int[] a){ArrayList<Integer> l=new ArrayList<>();for (int i:a) l.add(i);Collections.sort(l);for (int i=0; i<a.length; i++) a[i]=l.get(i);}static void sort(long[] a){ArrayList<Long> l=new ArrayList<>();for (long i:a) l.add(i);Collections.sort(l);for (int i=0; i<a.length; i++) a[i]=l.get(i);}static long gcd(long a, long b){if (a == 0)return b;return gcd(b%a, a);}static void calcsubarray(long a[],long x[], int n, int c){for (int i=0; i<(1<<n); i++){long s = 0;for (int j=0; j<n; j++)if ((i & (1<<j))==0)s += a[j+c];x[i] = s;}}static class FastReader{byte[] buf = new byte[2048];int index, total;InputStream in;FastReader(InputStream is) {in = is;}int scan() throws IOException {if (index >= total) {index = 0;total = in.read(buf);if (total <= 0) {return -1;}}return buf[index++];}String next() throws IOException {int c;for (c = scan(); c <= 32; c = scan());StringBuilder sb = new StringBuilder();for (; c > 32; c = scan()) {sb.append((char) c);}return sb.toString();}int nextInt() throws IOException {int c, val = 0;for (c = scan(); c <= 32; c = scan());boolean neg = c == '-';if (c == '-' || c == '+') {c = scan();}for (; c >= '0' && c <= '9'; c = scan()) {val = (val << 3) + (val << 1) + (c & 15);}return neg ? -val : val;}long nextLong() throws IOException {int c;long val = 0;for (c = scan(); c <= 32; c = scan());boolean neg = c == '-';if (c == '-' || c == '+') {c = scan();}for (; c >= '0' && c <= '9'; c = scan()) {val = (val << 3) + (val << 1) + (c & 15);}return neg ? -val : val;}}static class Reader{final private int BUFFER_SIZE = 1 << 16;private DataInputStream din;private byte[] buffer;private int bufferPointer, bytesRead;public Reader(){din = new DataInputStream(System.in);buffer = new byte[BUFFER_SIZE];bufferPointer = bytesRead = 0;}public Reader(String file_name) throws IOException{din = new DataInputStream(new FileInputStream(file_name));buffer = new byte[BUFFER_SIZE];bufferPointer = bytesRead = 0;}public String readLine() throws IOException{byte[] buf = new byte[64]; // line lengthint cnt = 0, c;while ((c = read()) != -1){if (c == '\n')break;buf[cnt++] = (byte) c;}return new String(buf, 0, cnt);}public int nextInt() throws IOException{int ret = 0;byte c = read();while (c <= ' ')c = read();boolean neg = (c == '-');if (neg)c = read();do{ret = ret * 10 + c - '0';} while ((c = read()) >= '0' && c <= '9');if (neg)return -ret;return ret;}public long nextLong() throws IOException{long ret = 0;byte c = read();while (c <= ' ')c = read();boolean neg = (c == '-');if (neg)c = read();do {ret = ret * 10 + c - '0';}while ((c = read()) >= '0' && c <= '9');if (neg)return -ret;return ret;}public double nextDouble() throws IOException{double ret = 0, div = 1;byte c = read();while (c <= ' ')c = read();boolean neg = (c == '-');if (neg)c = read();do {ret = ret * 10 + c - '0';}while ((c = read()) >= '0' && c <= '9');if (c == '.'){while ((c = read()) >= '0' && c <= '9'){ret += (c - '0') / (div *= 10);}}if (neg)return -ret;return ret;}private void fillBuffer() throws IOException{bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);if (bytesRead == -1)buffer[0] = -1;}private byte read() throws IOException{if (bufferPointer == bytesRead)fillBuffer();return buffer[bufferPointer++];}public void close() throws IOException{if (din == null)return;din.close();}}}// Thank You !