結果

問題 No.1416 ショッピングモール
ユーザー Debojyoti MandalDebojyoti Mandal
提出日時 2021-03-05 22:37:06
言語 Java21
(openjdk 21)
結果
AC  
実行時間 150 ms / 1,000 ms
コード長 7,643 bytes
コンパイル時間 2,564 ms
コンパイル使用メモリ 80,364 KB
実行使用メモリ 42,892 KB
最終ジャッジ日時 2024-04-16 10:23:16
合計ジャッジ時間 5,109 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 52 ms
36,964 KB
testcase_01 AC 52 ms
37,112 KB
testcase_02 AC 51 ms
37,208 KB
testcase_03 AC 52 ms
37,024 KB
testcase_04 AC 52 ms
37,024 KB
testcase_05 AC 52 ms
37,060 KB
testcase_06 AC 51 ms
37,032 KB
testcase_07 AC 52 ms
37,060 KB
testcase_08 AC 56 ms
36,984 KB
testcase_09 AC 53 ms
37,032 KB
testcase_10 AC 54 ms
36,856 KB
testcase_11 AC 64 ms
37,344 KB
testcase_12 AC 55 ms
36,856 KB
testcase_13 AC 65 ms
37,092 KB
testcase_14 AC 80 ms
37,952 KB
testcase_15 AC 76 ms
38,180 KB
testcase_16 AC 68 ms
37,140 KB
testcase_17 AC 79 ms
38,164 KB
testcase_18 AC 75 ms
38,524 KB
testcase_19 AC 81 ms
38,088 KB
testcase_20 AC 76 ms
38,444 KB
testcase_21 AC 148 ms
42,892 KB
testcase_22 AC 150 ms
42,808 KB
testcase_23 AC 89 ms
40,600 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

//Author : Debojyoti Mandal
//Some of the methods are copied from GeeksforGeeks Website
import 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 length 
            int 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 !
0