Submission #2012691


Source Code Expand

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class TEST{
	static void Main(){
		Sol mySol =new Sol();
		mySol.Solve();
	}
}

class Sol{
	public void Solve(){
		
		if(K == 1){
			Console.WriteLine(A.Max());
			return;
		}
		long[][] dp = new long[K+1][];
		for(int i=0;i<=K;i++){
			dp[i] = new long[N];
		}
		
		for(int i=0;i<N;i++) dp[0][i] = A[i];
		
		for(int t=0;t<K-1;t++){
			var deq = new Deque<int>();
			deq.AddLast(t);
			for(int i=t+1;i<N;i++){
				dp[t+1][i] = (t + 2) * A[i] + dp[t][deq.First];
				while(deq.Count > 0 && dp[t][i] >= dp[t][deq.Last]) deq.RemoveLast();
				deq.AddLast(i);
				if(deq.First < i - M + 1) deq.RemoveFirst();
			}
		}
		
		long ans = 0;
		for(int i=K-1;i<N;i++) ans = Math.Max(ans,dp[K-1][i]);
		Console.WriteLine(ans);
		
	}
	int N, M, K;
	long[] A;
	public Sol(){
		var d = ria();
		N = d[0]; M = d[1]; K = d[2];
		A = rla();
	}

	static String rs(){return Console.ReadLine();}
	static int ri(){return int.Parse(Console.ReadLine());}
	static long rl(){return long.Parse(Console.ReadLine());}
	static double rd(){return double.Parse(Console.ReadLine());}
	static String[] rsa(char sep=' '){return Console.ReadLine().Split(sep);}
	static int[] ria(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>int.Parse(e));}
	static long[] rla(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>long.Parse(e));}
	static double[] rda(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>double.Parse(e));}
}


class Deque<T> :IEnumerable<T>{
	
	
	T[] arr;
	int head, tail;
	int count;
	int capacity;
	
	public int Capacity{
		get{ return capacity;}
		private set{ capacity = value;}
	}
	public int Count{
		get{ return count;}
		private set{ capacity = value;}
	}
	
	public T First {
		get { 
			if(count == 0) throw new Exception("empty");
			return arr[head];
		}
	}
	public T Last {
		get { 
			if(count == 0) throw new Exception("empty");
			return arr[tail]; 
		}
	}
	
	public T this [int pos]{
		get{
			if(pos >= count) throw new ArgumentOutOfRangeException("out of range");
			return arr[(head + pos) % arr.Length];
		}
	}
	
	public IEnumerator<T> GetEnumerator(){
		for(int i=0;i<count;i++){
			yield return arr[(head + i) % arr.Length];
		}
	}
	
	
	IEnumerator IEnumerable.GetEnumerator() {
		return this.GetEnumerator();
	}
		
	public void AddFirst(T elem){
		if(count == capacity) {
			Twice();
		}
		
		head = count == 0 ? head : (head - 1);
		if(head < 0) head = arr.Length - 1;
		arr[head] = elem;
		count++;
		
	}
	
	public void RemoveFirst(){
		if(count == 0) throw new Exception("empty");
		arr[head] = default(T);
		count--;
		head = count == 0 ? head : head + 1; if(head == arr.Length) head = 0;
	}
	
	public void AddLast(T elem){
		if(count == capacity) {
			Twice();
		}
		
		tail = count == 0 ? tail : (tail + 1);
		if(tail >= arr.Length) tail = 0;
		arr[tail] = elem;
		count++;
		
	}
	
	public void RemoveLast(){
		if(count == 0) throw new Exception("empty");
		arr[tail] = default(T);
		count--;
		tail = count == 0 ? tail : tail - 1; if(tail < 0) tail = arr.Length - 1;
	}
	
	void Twice(){
		
		T[] nxt = new T[arr.Length * 2];
		int nhead = arr.Length / 2;
		for(int i = 0; i < count; i++) nxt[nhead + i] = arr[(head + i) % arr.Length];
		head = nhead;
		tail = head + count - 1;
		arr = nxt; 
		capacity = arr.Length;
	}
	
	
	
	public Deque() {
		Init(256);
	}
	
	public Deque(int cap_){
		Init(cap_);
	}
	
	void Init(int cap){
		if(cap < 0) cap = 256;
		arr = new T[cap];
		capacity = cap;
		head = cap / 2;
		tail = cap / 2;
		count = 0;
	}
	
	
}

Submission Info

Submission Time
Task A - Struck Out
User kuuso
Language C# (Mono 4.6.2.0)
Score 700
Code Size 3813 Byte
Status AC
Exec Time 1322 ms
Memory 254276 KB

Judge Result

Set Name Sample subtask1 subtask2 subtask3 All
Score / Max Score 0 / 0 100 / 100 200 / 200 300 / 300 100 / 100
Status
AC × 3
AC × 10
AC × 12
AC × 21
AC × 46
Set Name Test Cases
Sample sample_1.txt, sample_2.txt, sample_3.txt
subtask1 sample_2.txt, subtask_1_1.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
subtask2 sample_1.txt, sample_2.txt, sample_3.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt
subtask3 sample_1.txt, sample_2.txt, sample_3.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt, subtask_3_9.txt
All sample_1.txt, sample_2.txt, sample_3.txt, sample_1.txt, sample_2.txt, sample_3.txt, subtask_1_1.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt, subtask_3_9.txt, subtask_4_1.txt, subtask_4_10.txt, subtask_4_11.txt, subtask_4_12.txt, subtask_4_13.txt, subtask_4_2.txt, subtask_4_3.txt, subtask_4_4.txt, subtask_4_5.txt, subtask_4_6.txt, subtask_4_7.txt, subtask_4_8.txt, subtask_4_9.txt
Case Name Status Exec Time Memory
sample_1.txt AC 23 ms 11220 KB
sample_2.txt AC 23 ms 11220 KB
sample_3.txt AC 23 ms 9300 KB
subtask_1_1.txt AC 23 ms 9172 KB
subtask_1_2.txt AC 150 ms 33368 KB
subtask_1_3.txt AC 1314 ms 250176 KB
subtask_1_4.txt AC 31 ms 10848 KB
subtask_1_5.txt AC 81 ms 21600 KB
subtask_1_6.txt AC 24 ms 11220 KB
subtask_1_7.txt AC 477 ms 91868 KB
subtask_1_8.txt AC 1306 ms 252224 KB
subtask_1_9.txt AC 26 ms 9248 KB
subtask_2_1.txt AC 24 ms 11328 KB
subtask_2_2.txt AC 23 ms 11328 KB
subtask_2_3.txt AC 23 ms 11200 KB
subtask_2_4.txt AC 23 ms 9172 KB
subtask_2_5.txt AC 23 ms 11220 KB
subtask_2_6.txt AC 23 ms 9172 KB
subtask_2_7.txt AC 23 ms 11328 KB
subtask_2_8.txt AC 23 ms 11200 KB
subtask_2_9.txt AC 23 ms 9152 KB
subtask_3_1.txt AC 185 ms 36340 KB
subtask_3_2.txt AC 186 ms 36336 KB
subtask_3_3.txt AC 183 ms 35576 KB
subtask_3_4.txt AC 154 ms 31332 KB
subtask_3_5.txt AC 31 ms 12768 KB
subtask_3_6.txt AC 122 ms 24444 KB
subtask_3_7.txt AC 186 ms 36340 KB
subtask_3_8.txt AC 41 ms 16480 KB
subtask_3_9.txt AC 186 ms 36336 KB
subtask_4_1.txt AC 1310 ms 252228 KB
subtask_4_10.txt AC 1050 ms 252224 KB
subtask_4_11.txt AC 1299 ms 250164 KB
subtask_4_12.txt AC 1309 ms 250176 KB
subtask_4_13.txt AC 1322 ms 254276 KB
subtask_4_2.txt AC 1310 ms 250180 KB
subtask_4_3.txt AC 1306 ms 250176 KB
subtask_4_4.txt AC 1310 ms 254276 KB
subtask_4_5.txt AC 1117 ms 213828 KB
subtask_4_6.txt AC 157 ms 32892 KB
subtask_4_7.txt AC 717 ms 139732 KB
subtask_4_8.txt AC 1290 ms 246520 KB
subtask_4_9.txt AC 611 ms 119248 KB