Submission #993130


Source Code Expand

using System;
using System.Text;
using System.Collections.Generic;
class Solve{
    int N,M;
    int[] X;
    public Solve(){}
    StringBuilder sb;
    public static int Main(){
        new Solve().Run();
        return 0;
    }
    void Run(){
        sb = new StringBuilder();
        Read();
        Calc();
        Console.Write(sb.ToString());
    }
    void Calc(){
        int[] A = new int[100001];
        for(int i=0;i<100001;i++){
            A[i] = 0;
        }
        for(int i=0;i<N;i++){
            A[X[i]]++;
        }
        int[] B = new int[M];
        int[] C = new int[M];
        for(int i=0;i<M;i++){
            B[i] = 0;
            C[i] = 0;
        }
        for(int i=0;i<100001;i++){
            B[i%M] += A[i];
            if(A[i] % 2 == 0){
                C[i%M] += A[i];
            }
            else{
                C[i%M] += A[i] - 1;
            }
        }
        int count = 0;
        for(int i=0;i <= M-i;i++){
            if(i == M-i || i == 0){
                count += B[i]/2;
            }
            else{
                if(B[i] > B[M-i]){
                    count += B[M-i];
                    if(C[i] > B[i] - B[M-i]){
                        count += (B[i] - B[M-i])/2; 
                    }
                    else{
                        count += C[i]/2;
                    }
                }
                else{
                    count += B[i];
                    if(C[M-i] > B[M-i] - B[i]){
                        count += (B[M-i] - B[i])/2;
                    }
                    else{
                        count += C[M-i]/2;
                    }
                }
            }
        }
        sb.Append(count+"\n");
    }
    void Read(){
        string[] str = Console.ReadLine().Split(' ');
        N = int.Parse(str[0]);
        M = int.Parse(str[1]);
        X = new int[N];
        str = Console.ReadLine().Split(' ');
        for(int i=0;i<N;i++){
            X[i] = int.Parse(str[i]);
        }
    }    
}

Submission Info

Submission Time
Task D - Pair Cards
User leign
Language C# (Mono 4.6.2.0)
Score 700
Code Size 2078 Byte
Status AC
Exec Time 60 ms
Memory 10968 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 32
Set Name Test Cases
sample sample-01.txt, sample-02.txt
all sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt
Case Name Status Exec Time Memory
01-01.txt AC 22 ms 3160 KB
01-02.txt AC 59 ms 10200 KB
01-03.txt AC 59 ms 10200 KB
01-04.txt AC 58 ms 10200 KB
01-05.txt AC 58 ms 10200 KB
01-06.txt AC 58 ms 10200 KB
01-07.txt AC 59 ms 10200 KB
01-08.txt AC 58 ms 10200 KB
01-09.txt AC 59 ms 10200 KB
01-10.txt AC 59 ms 10584 KB
01-11.txt AC 60 ms 10968 KB
01-12.txt AC 57 ms 10200 KB
01-13.txt AC 58 ms 10584 KB
01-14.txt AC 58 ms 10200 KB
01-15.txt AC 58 ms 10200 KB
01-16.txt AC 57 ms 10200 KB
01-17.txt AC 58 ms 10200 KB
01-18.txt AC 58 ms 10200 KB
01-19.txt AC 58 ms 10328 KB
01-20.txt AC 59 ms 10968 KB
01-21.txt AC 58 ms 10200 KB
01-22.txt AC 59 ms 10200 KB
01-23.txt AC 58 ms 10200 KB
01-24.txt AC 58 ms 10200 KB
01-25.txt AC 59 ms 10456 KB
01-26.txt AC 59 ms 10968 KB
01-27.txt AC 41 ms 7512 KB
01-28.txt AC 24 ms 4184 KB
01-29.txt AC 22 ms 3544 KB
01-30.txt AC 22 ms 3928 KB
sample-01.txt AC 21 ms 3160 KB
sample-02.txt AC 21 ms 3160 KB