Submission #1832141


Source Code Expand

#include <iostream>
#include <vector>
#include <deque>
#include <math.h>
#include <set>
#include <iomanip>
#include <time.h>
#include <list>
#include <stdio.h>
#include <queue>
#include <map>
#include <algorithm>
#include <assert.h>
#include <memory.h>

#define mk make_pair
#define sc second
#define fr first
#define pb push_back
#define sz(s) ( (int)s.size() )
#define all(s) s.begin(), s.end()

using namespace std;

const int N = 1e5 + 5;

int n, m, ar[N], cur[N], ans, mx[N], cnt, sum;

vector <int> g[N], V;

vector <pair <int, int> > vec;

main ()
{
    cin >> n >> m;
    for (int i = 1; i <=n; i++)
    {
        scanf("%d", &ar[i]), cur[ ar[i] % m ]++;

        g[ ar[i] % m ].pb( ar[i] );
    }

    ans = cur[0] >> 1;

    for (int i = 1; i < (m + 1) / 2; i++)
    {
        if (cur[i] >= cur[m - i])
        {
            ans += cur[m - i];
            vec.pb( mk( cur[i] - cur[m - i], i ) );
        }
        else
        {
            ans += cur[i];
            vec.pb( mk( cur[m - i] - cur[i], m - i ) );
        }
    }
    if (m % 2 == 0)
        ans += cur[m / 2] >> 1;

    for (auto x : vec)
    {
//        V.clear();

        sum = 0;
        cnt = 1;

        int v = x.sc, col = x.fr;

        sort(all(g[v]));

        for (int j = 1; j < sz(g[v]); j++)
        {
            if ( g[v][j] == g[v][j - 1] )
                cnt++;
            else
            {
                sum += (cnt - (cnt % 2));
//                V.pb(cnt - (cnt % 2) );
                cnt = 1;
            }
        }
        sum += (cnt - (cnt % 2));
//        V.pb( cnt - (cnt % 2) );
//        sort( all(V), greater<int>() );
        ans += min( sum, col ) / 2;
    }

    cout << ans << endl;
}

Submission Info

Submission Time
Task D - Pair Cards
User vjudge4
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1701 Byte
Status AC
Exec Time 23 ms
Memory 7164 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:38:48: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &ar[i]), cur[ ar[i] % m ]++;
                                                ^

Judge Result

Set Name sample all
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 34
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, sample-01.txt, sample-02.txt
Case Name Status Exec Time Memory
01-01.txt AC 3 ms 2560 KB
01-02.txt AC 13 ms 3452 KB
01-03.txt AC 13 ms 3580 KB
01-04.txt AC 15 ms 3584 KB
01-05.txt AC 14 ms 3584 KB
01-06.txt AC 15 ms 3712 KB
01-07.txt AC 15 ms 3456 KB
01-08.txt AC 15 ms 3584 KB
01-09.txt AC 16 ms 3584 KB
01-10.txt AC 21 ms 4736 KB
01-11.txt AC 23 ms 6016 KB
01-12.txt AC 14 ms 3452 KB
01-13.txt AC 14 ms 3832 KB
01-14.txt AC 13 ms 3472 KB
01-15.txt AC 15 ms 3712 KB
01-16.txt AC 15 ms 3712 KB
01-17.txt AC 15 ms 3584 KB
01-18.txt AC 17 ms 3968 KB
01-19.txt AC 19 ms 3968 KB
01-20.txt AC 22 ms 7164 KB
01-21.txt AC 13 ms 3520 KB
01-22.txt AC 14 ms 3456 KB
01-23.txt AC 14 ms 3584 KB
01-24.txt AC 15 ms 3584 KB
01-25.txt AC 18 ms 4096 KB
01-26.txt AC 19 ms 4732 KB
01-27.txt AC 13 ms 5244 KB
01-28.txt AC 5 ms 3708 KB
01-29.txt AC 3 ms 3200 KB
01-30.txt AC 4 ms 3324 KB
sample-01.txt AC 3 ms 2560 KB
sample-02.txt AC 2 ms 2560 KB