提出 #69662890
ソースコード 拡げる
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Numerics;
using System.IO.Pipes;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.Versioning;
using System.CodeDom;
namespace AtCoder.Abc
{
public class AtCoderABC
{
public static void Main(string[] args)
{
var sw = new System.IO.StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
Console.SetOut(sw);
// 実行したいクラスのMainメソッドを呼び出す
// QuestionA.Run();
// QuestionB.Run();
QuestionC.Run();
// QuestionD.Run();
// QuestionE.Run();
// QuestionF.Run();
// QuestionG.Run();
// QuestionH.Run();
// QuestionI.Run();
Console.Out.Flush();
}
}
public class QuestionA
{
public static void Run()
{
var LA = Utilities.GetLongArray();
var N = LA[0];
long ans = 0;
for (int i = 0; i < N; ++i)
{
var tmp = i + 1;
var tmp2 = (long)Math.Pow(-1, tmp);
var tmp3 = (long)Math.Pow(tmp, 3);
var tmp4 = tmp2 * tmp3;
ans += tmp4;
}
Console.WriteLine(ans);
}
}
public class QuestionB
{
public static void Run()
{
var LA = Utilities.GetLongArray();
}
}
public class QuestionC
{
public static void Run()
{
var LA = Utilities.GetLongArray();
var N = LA[0];
var Q = LA[1];
var A = new long[N*2];
LA = Utilities.GetLongArray();
for (int i = 0; i < N; ++i)
{
A[i] = LA[i];
}
for (int i = 0; i < N; ++i)
{
A[i + N] = A[i];
}
var RUI = new long[N * 2 + 1];
RUI[0] = 0;
long sum = 0;
for (int i = 0; i < (N*2); ++i)
{
sum += A[i];
RUI[i + 1] = sum;
}
long shift = 0;
for (int i = 0; i < Q; ++i)
{
LA = Utilities.GetLongArray();
if (LA[0] == 1)
{
var C = LA[1];
shift += C;
shift = shift % N;
}
else
{
var L = LA[1] - 1;
var R = LA[2];
var tmp = RUI[R + shift] - RUI[L + shift];
Console.WriteLine(tmp);
}
}
}
}
public class QuestionD
{
public static void Run()
{
var LA = Utilities.GetLongArray();
}
}
public class QuestionE
{
public static void Run()
{
var LA = Utilities.GetLongArray();
}
}
public class QuestionF
{
public static void Run()
{
var LA = Utilities.GetLongArray();
}
}
public class QuestionG
{
public static void Run()
{
var LA = Utilities.GetLongArray();
}
}
public class QuestionH
{
public static void Run()
{
var LA = Utilities.GetLongArray();
}
}
public class QuestionI
{
public static void Run()
{
var LA = Utilities.GetLongArray();
}
}
internal class Utilities
{
public static string GetString()
{
return Console.ReadLine();
}
public static long GetLong()
{
return long.Parse(Console.ReadLine());
}
public static string[] GetStringArray()
{
return Console.ReadLine().Split(' ');
}
public static long[] GetLongArray()
{
return Console.ReadLine().Split(' ').Select(i => long.Parse(i)).ToArray();
}
public static void PrintArray(long[] array)
{
foreach (var item in array)
{
Console.WriteLine(item);
}
}
public static void PrintDouble(double d)
{
Console.WriteLine(string.Format("{0:f12}", d));
}
}
internal class Library
{
// Gcd(最大公約数)
public static long Gcd(long m, long n)
{
if (n == 0) return m;
return Gcd(n, m % n);
}
// Lcm(最小公倍数)答えが 10^18を超えるとき -1 を返す
public static long Lcm(long a, long b)
{
long POW18 = 1000000000000000000;
long r = a / Gcd(a, b);
if (r > (POW18 / b))
return -1;
else
return (r * b);
}
public static long Mod = 1000000007;
public static long ModPow(long a, long n)
{
long res = 1;
while (n > 0)
{
if ((n & 1) == 1)
{
res = res * a % Mod;
}
a = a * a % Mod;
n >>= 1;
}
return res;
}
public static long ModInv(long a)
{
return ModPow(a, Mod - 2);
}
public static long ModDiv(long a, long b)
{
return a * ModInv(b) % Mod;
}
public static long ModAdd(long a, long b)
{
return (a + b) % Mod;
}
public static long ModSub(long a, long b)
{
return (a - b + Mod) % Mod;
}
public static long ModMul(long a, long b)
{
return a * b % Mod;
}
public static long ModFact(long n)
{
long res = 1;
for (long i = 1; i <= n; i++)
{
res = res * i % Mod;
}
return res;
}
public static long ModComb(long n, long k)
{
if (n < k) return 0;
if (n < 0 || k < 0) return 0;
return ModFact(n) * ModInv(ModFact(k)) % Mod * ModInv(ModFact(n - k)) % Mod;
}
public static long ModPerm(long n, long k)
{
if (n < k) return 0;
if (n < 0 || k < 0) return 0;
return ModFact(n) * ModInv(ModFact(n - k)) % Mod;
}
// ダイクストラ法
// 使用例:
//int n = 5; // ノード数
//var graph = new List<(int to, long cost)>[n];
// for (int i = 0; i<n; i++)
// {
// graph[i] = new List<(int to, long cost)>();
// }
// エッジの追加 (例: ノード0からノード1へのコスト10のエッジ)
//graph[0].Add((1, 10));
//graph[0].Add((2, 3));
//graph[1].Add((2, 1));
//graph[1].Add((3, 2));
//graph[2].Add((1, 4));
//graph[2].Add((3, 8));
//graph[2].Add((4, 2));
//graph[3].Add((4, 7));
//graph[4].Add((3, 9));
// ダイクストラ法の呼び出し
//int startNode = 0; // 開始ノード
//var distances = Library.Dijkstra(n, graph, startNode);
// 結果の表示
//for (int i = 0; i<n; i++)
//{
//Console.WriteLine($"Node {i}: {distances[i]}");
//}
public static long[] Dijkstra(int n, List<(int to, long cost)>[] graph, int start)
{
var dist = new long[n];
for (int i = 0; i < n; i++) dist[i] = long.MaxValue;
dist[start] = 0;
var pq = new PriorityQueue<(long dist, int node)>();
pq.Enqueue((0, start));
while (pq.Count > 0)
{
var (d, v) = pq.Dequeue();
if (dist[v] < d) continue;
foreach (var (to, cost) in graph[v])
{
var newDist = d + cost;
if (newDist < dist[to])
{
dist[to] = newDist;
pq.Enqueue((newDist, to));
}
}
}
return dist;
}
// 優先度付きキューの実装
public class PriorityQueue<T> where T : IComparable<T>
{
private List<T> data;
public PriorityQueue()
{
this.data = new List<T>();
}
public void Enqueue(T item)
{
data.Add(item);
int ci = data.Count - 1;
while (ci > 0)
{
int pi = (ci - 1) / 2;
if (data[ci].CompareTo(data[pi]) >= 0) break;
var tmp = data[ci];
data[ci] = data[pi];
data[pi] = tmp;
ci = pi;
}
}
public T Dequeue()
{
int li = data.Count - 1;
var frontItem = data[0];
data[0] = data[li];
data.RemoveAt(li);
--li;
int pi = 0;
while (true)
{
int ci = pi * 2 + 1;
if (ci > li) break;
int rc = ci + 1;
if (rc <= li && data[rc].CompareTo(data[ci]) < 0)
ci = rc;
if (data[pi].CompareTo(data[ci]) <= 0) break;
var tmp = data[pi];
data[pi] = data[ci];
data[ci] = tmp;
pi = ci;
}
return frontItem;
}
public int Count => data.Count;
}
// Union-Find Treeの実装
public class UnionFind
{
private int[] parent;
private int[] rank;
private int[] size;
public UnionFind(int n)
{
parent = new int[n];
rank = new int[n];
size = new int[n];
for (int i = 0; i < n; i++)
{
parent[i] = i;
rank[i] = 0;
size[i] = 1;
}
}
public int Find(int x)
{
if (parent[x] == x)
{
return x;
}
else
{
parent[x] = Find(parent[x]);
return parent[x];
}
}
public void Union(int x, int y)
{
int rootX = Find(x);
int rootY = Find(y);
if (rootX != rootY)
{
if (rank[rootX] < rank[rootY])
{
parent[rootX] = rootY;
size[rootY] += size[rootX];
}
else if (rank[rootX] > rank[rootY])
{
parent[rootY] = rootX;
size[rootX] += size[rootY];
}
else
{
parent[rootY] = rootX;
size[rootX] += size[rootY];
rank[rootX]++;
}
}
}
public bool Same(int x, int y)
{
return Find(x) == Find(y);
}
public int Size(int x)
{
return size[Find(x)];
}
public int CountGroups()
{
int count = 0;
for (int i = 0; i < parent.Length; i++)
{
if (parent[i] == i)
{
count++;
}
}
return count;
}
}
}
}
提出情報
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
350 / 350 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
48 ms |
26172 KiB |
| 00_sample_01.txt |
AC |
46 ms |
26100 KiB |
| 01_random_00.txt |
AC |
48 ms |
26092 KiB |
| 01_random_01.txt |
AC |
113 ms |
54184 KiB |
| 01_random_02.txt |
AC |
135 ms |
67888 KiB |
| 01_random_03.txt |
AC |
81 ms |
59928 KiB |
| 01_random_04.txt |
AC |
132 ms |
56588 KiB |
| 01_random_05.txt |
AC |
153 ms |
73628 KiB |
| 01_random_06.txt |
AC |
120 ms |
54748 KiB |
| 01_random_07.txt |
AC |
149 ms |
73616 KiB |
| 01_random_08.txt |
AC |
159 ms |
76148 KiB |
| 01_random_09.txt |
AC |
156 ms |
73800 KiB |
| 01_random_10.txt |
AC |
168 ms |
75248 KiB |
| 01_random_11.txt |
AC |
163 ms |
73672 KiB |
| 01_random_12.txt |
AC |
132 ms |
73652 KiB |
| 01_random_13.txt |
AC |
128 ms |
73672 KiB |
| 01_random_14.txt |
AC |
171 ms |
73856 KiB |
| 01_random_15.txt |
AC |
169 ms |
73708 KiB |
| 01_random_16.txt |
AC |
166 ms |
73768 KiB |
| 01_random_17.txt |
AC |
144 ms |
73604 KiB |
| 01_random_18.txt |
AC |
164 ms |
77352 KiB |
| 01_random_19.txt |
AC |
143 ms |
77532 KiB |