Submission #11249885


Source Code Expand

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

namespace Contest
{
    class Program
    {
        static void Main(string[] args)
        {
            AGC015.C();
        }

        class AGC015
        {
            public static void A()
            {
                var N = Read.Long();
                var A = Read.Long();
                var B = Read.Long();
                Console.WriteLine((A > B || (N == 1 && A != B)) ? 0 : (N - 2) * (B - A) + 1);
            }
            public static void B()
            {
                var S = Read.Str();
                long N = S.Length;
                long count = N * (N - 1);
                for(int i = 0; i < N; ++i)
                {
                    count += S[i] == 'U' ? i : N - i - 1;
                }
                Console.WriteLine(count);
            }
            public static void C()
            {
                var N = Read.Int();
                var M = Read.Int();
                var Q = Read.Int();
                bool[,] S = new bool[N, M];
                for(int i = 0; i < N; ++i)
                {
                    var str = Read.Str();
                    for(int j = 0; j < M; ++j)
                    {
                        S[i, j] = str[j] == '1';
                    }
                }
                int[,] Ssum = new int[N + 1, M + 1];
                int[,] T1Sum = new int[N + 1, M];
                int[,] T2Sum = new int[N, M + 1];
                for(int i = 0; i < N; ++i)
                {
                    for(int j = 0; j < M; ++j)
                    {
                        Ssum[i + 1, j + 1] = Ssum[i + 1, j] + Ssum[i, j + 1] - Ssum[i, j] + (S[i, j] ? 1 : 0);
                    }
                }
                for (int i = 0; i < N; ++i)
                {
                    for (int j = 0; j < M -1; ++j)
                    {
                        T1Sum[i + 1, j + 1] = T1Sum[i + 1, j] + T1Sum[i, j + 1] - T1Sum[i, j] + (S[i, j] && S[i, j + 1] ? 1 : 0);
                    }
                }
                for (int i = 0; i < N -1; ++i)
                {
                    for (int j = 0; j < M; ++j)
                    {
                        T2Sum[i + 1, j + 1] = T2Sum[i + 1, j] + T2Sum[i, j + 1] - T2Sum[i, j] + (S[i, j] && S[i + 1, j] ? 1 : 0);
                    }
                }
                for(int q = 0; q < Q; ++q)
                {
                    var xy = Read.IntN();
                    var x1 = xy[0];
                    var y1 = xy[1];
                    var x2 = xy[2];
                    var y2 = xy[3];
                    var countS = Ssum[x2, y2] - Ssum[x1 - 1, y2] - Ssum[x2, y1 - 1] + Ssum[x1 - 1, y1 - 1];
                    var countT1 = T1Sum[x2, y2 - 1] - T1Sum[x1 - 1, y2 - 1] - T1Sum[x2, y1 - 1] + T1Sum[x1 - 1, y1 - 1];
                    var countT2 = T2Sum[x2 - 1, y2] - T2Sum[x1 - 1, y2] - T2Sum[x2 - 1, y1 - 1] + T2Sum[x1 - 1, y1 - 1];
                    Console.WriteLine(countS - countT1 - countT2);
                }
            }
            public static void D()
            {

            }
            public static void E()
            {

            }
            public static void F()
            {

            }
        }

        class Graph
        {
            public static int[] CalcDistance_OnTree(Dictionary<int, HashSet<int>> adj, int N, int start)
            {
                var dist = Enumerable.Range(0, N + 1).Select(i => -1).ToArray();
                dist[start] = 0;
                Queue<int> queue = new Queue<int>();
                queue.Enqueue(start);
                while (queue.Count > 0)
                {
                    var v = queue.Dequeue();
                    foreach (var w in adj[v])
                    {
                        if (dist[w] < 0)
                        {
                            dist[w] = dist[v] + 1;
                            queue.Enqueue(w);
                        }
                    }
                }
                return dist;
            }
        }

        static class Read
        {
            static Queue<string> queue = new Queue<string>();
            static void Enqueue() { var ss = Console.ReadLine().Split(' '); foreach (var s in ss) { queue.Enqueue(s); } }
            public static int Int() { if (queue.Count == 0) { Enqueue(); } return Convert.ToInt32(queue.Dequeue()); }
            public static long Long() { if (queue.Count == 0) { Enqueue(); } return Convert.ToInt64(queue.Dequeue()); }
            public static string Str() { if (queue.Count == 0) { Enqueue(); } return queue.Dequeue(); }
            public static int[] IntN() { return Console.ReadLine().Split(' ').Select(s => Convert.ToInt32(s)).ToArray(); }
            public static long[] LongN() { return Console.ReadLine().Split(' ').Select(s => Convert.ToInt64(s)).ToArray(); }
            public static string[] StrN() { return Console.ReadLine().Split(' '); }
            public static Tuple<int, int>[] TupleInt(int n) { List<Tuple<int, int>> list = new List<Tuple<int, int>>(); for (int i = 0; i < n; ++i) { var ab = Read.IntN(); list.Add(new Tuple<int, int>(ab[0], ab[1])); } return list.ToArray(); }
            public static Tuple<long, long>[] TupleLong(int n) { List<Tuple<long, long>> list = new List<Tuple<long, long>>(); for (int i = 0; i < n; ++i) { var ab = Read.LongN(); list.Add(new Tuple<long, long>(ab[0], ab[1])); } return list.ToArray(); }
            public static Tuple<string, string>[] TupleStr(int n) { List<Tuple<string, string>> list = new List<Tuple<string, string>>(); for (int i = 0; i < n; ++i) { var ab = Read.StrN(); list.Add(new Tuple<string, string>(ab[0], ab[1])); } return list.ToArray(); }
            public static Tuple<double, double>[] TupleDouble(int n) { List<Tuple<double, double>> list = new List<Tuple<double, double>>(); for (int i = 0; i < n; ++i) { var ab = Read.LongN(); list.Add(new Tuple<double, double>(ab[0], ab[1])); } return list.ToArray(); }
            public static long[,] LongMatrix(int r, int c)
            {
                var mat = new long[r, c];
                for (int i = 0; i < r; ++i)
                {
                    var x = Read.LongN();
                    for (int j = 0; j < c; ++j)
                    {
                        mat[i, j] = x[j];
                    }
                }
                return mat;
            }
            public static Dictionary<int, HashSet<int>> AdjacencyList(int N, int M)
            {
                Dictionary<int, HashSet<int>> dict = new Dictionary<int, HashSet<int>>();
                for (int i = 0; i <= N; ++i)
                {
                    dict.Add(i, new HashSet<int>());
                }
                for (int i = 0; i < M; ++i)
                {
                    var ab = Read.IntN();
                    dict[ab[0]].Add(ab[1]);
                    dict[ab[1]].Add(ab[0]);
                }
                return dict;
            }
            public static Dictionary<int, Dictionary<int, long>> AdjacencyListWithWeight(int N, int M)
            {
                Dictionary<int, Dictionary<int, long>> dict = new Dictionary<int, Dictionary<int, long>>();
                for (int i = 0; i <= N; ++i)
                {
                    dict.Add(i, new Dictionary<int, long>());
                }
                for (int i = 0; i < M; ++i)
                {
                    var ab = Read.IntN();
                    dict[ab[0]].Add(ab[1], ab[2]);
                    dict[ab[1]].Add(ab[0], ab[2]);
                }
                return dict;
            }
        }
    }
}

Submission Info

Submission Time
Task C - Nuske vs Phantom Thnook
User UsagiSony
Language C# (Mono 4.6.2.0)
Score 700
Code Size 7820 Byte
Status AC
Exec Time 1970 ms
Memory 69080 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 50
Set Name Test Cases
Sample s1.txt, s2.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, s1.txt, s2.txt
Case Name Status Exec Time Memory
01.txt AC 1846 ms 67296 KB
02.txt AC 1970 ms 65240 KB
03.txt AC 1832 ms 67192 KB
04.txt AC 1918 ms 66904 KB
05.txt AC 1895 ms 67548 KB
06.txt AC 1946 ms 67288 KB
07.txt AC 1760 ms 64604 KB
08.txt AC 1841 ms 63084 KB
09.txt AC 1789 ms 60244 KB
10.txt AC 1931 ms 67168 KB
11.txt AC 1885 ms 67420 KB
12.txt AC 1695 ms 34420 KB
13.txt AC 1698 ms 18444 KB
14.txt AC 1527 ms 16396 KB
15.txt AC 1462 ms 15872 KB
16.txt AC 1552 ms 18208 KB
17.txt AC 1512 ms 16432 KB
18.txt AC 1518 ms 14024 KB
19.txt AC 1532 ms 16448 KB
20.txt AC 1775 ms 59452 KB
21.txt AC 1795 ms 66788 KB
22.txt AC 1905 ms 65116 KB
23.txt AC 1527 ms 16644 KB
24.txt AC 1895 ms 67168 KB
25.txt AC 1512 ms 16000 KB
26.txt AC 1597 ms 14184 KB
27.txt AC 1530 ms 18240 KB
28.txt AC 1557 ms 17992 KB
29.txt AC 1524 ms 16408 KB
30.txt AC 1545 ms 16256 KB
31.txt AC 1798 ms 67800 KB
32.txt AC 1865 ms 67540 KB
33.txt AC 1846 ms 67040 KB
34.txt AC 1880 ms 65372 KB
35.txt AC 1786 ms 66908 KB
36.txt AC 1912 ms 68964 KB
37.txt AC 1791 ms 69080 KB
38.txt AC 1877 ms 66916 KB
39.txt AC 1796 ms 67548 KB
40.txt AC 1877 ms 65372 KB
41.txt AC 1841 ms 65120 KB
42.txt AC 1894 ms 69080 KB
43.txt AC 1757 ms 66652 KB
44.txt AC 1870 ms 68832 KB
45.txt AC 28 ms 11476 KB
46.txt AC 28 ms 11476 KB
47.txt AC 29 ms 11476 KB
48.txt AC 28 ms 11476 KB
s1.txt AC 27 ms 9428 KB
s2.txt AC 28 ms 11476 KB