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 |
|
|
|
|
|
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 |