[NOIP2016]魔法陣 T4

Description

六十年一次的魔法戰爭就要開始了,大魔法師準備從附近的魔法場中汲取魔法能量。

大魔法師有m個魔法物品,編號分別爲1,2,...,m。每個物品具有一個魔法值,我們用Xi表示編號爲i的物品的魔法值。每個魔法值Xi是不超過n的正整數,可能有多個物品的魔法值相同。

大魔法師認爲,當且僅當四個編號爲a,b,c,d的魔法物品滿足xa<xb<xc<xd,Xb-Xa=2(Xd-Xc),並且xb-xa<(xc-xb)/3時,這四個魔法物品形成了一個魔法陣,他稱這四個魔法物品分別爲這個魔法陣的A物品,B物品,C物品,D物品。

現在,大魔法師想要知道,對於每個魔法物品,作爲某個魔法陣的A物品出現的次數,作爲B物品的次數,作爲C物品的次數,和作爲D物品的次數。

Input

輸入文件的第一行包含兩個空格隔開的正整數n和m。

接下來m行,每行一個正整數,第i+1行的正整數表示

,即編號爲i的物品的魔法值。

保證

,,。每個

是分別在合法範圍內等概率隨機生成的。

Output

共輸出m行,每行四個整數。第i行的四個整數依次表示編號爲i的物品作爲A,B,C,D物品分別出現的次數。

保證標準輸出中的每個數都不會超過109

每行相鄰的兩個數之間用恰好一個空格隔開。

Sample Input

30 81247285292624

Sample Output

4 0 0 00 0 1 00 2 0 00 0 1 11 3 0 00 0 0 20 0 2 20 0 1 0

HINT

【樣例解釋】
共有5個魔法陣,分別爲:
物品1,3,7,6,其魔法值分別爲1,7,26,29;
物品1,5,2,7,其魔法值分別爲1,5,24,26;
物品1,5,7,4,其魔法值分別爲1,5,26,28;
物品1,5,8,7,其魔法值分別爲1,5,24,26;
物品5,3,4,6,其魔法值分別爲5,7,28,29。
以物品5爲例,它作爲A物品出現了1次,作爲B物品出現了3次,沒有作爲C物品或者D物品出現,所以這一行輸出的四個數依次爲1,3,0,0。
此外,如果我們將輸出看作一個m行4列的矩陣,那麼每一列上的m個數之和都應等於魔法陣的總數。所以,如果你的輸出不滿足這個性質,那麼這個輸出一定不正確。你可以通過這個性質在一定程度上檢查你的輸出的正確性。

【數據範圍】

測試點編號 n m
1 10 12
2 15 18
3 20 25
4 30 35
5 40 50
6 50 70
7 65 100
8 80 125
9 100 150
10 125 200
11 150 250
12 200 350
13 250 500
14 350 700
15 500 1000
16 700 2000
17 1000 5000
18 2000 10000
19 5000 20000
20 15000 40000
 
#include<stdio.h>
long long n,m,sum[40001],num[15001],a[15001],b[15001],c[15001],d[15001],cnt;
int main()
{
    scanf("%lld%lld",&n,&m);
    for(long long i=1;i<=m;i++)
    {
        scanf("%lld",&sum[i]);
        num[sum[i]]++;
    }
    for(long long i=1;i*9+1<=n;i++)
    {
        cnt=0;
        for(long long j=i*9+2;j<=n;j++)
        {
            cnt+=num[j-7*i-1]*num[j-9*i-1];
            c[j-i]+=num[j]*cnt;
            d[j]+=num[j-i]*cnt;
        }
        cnt=0;
        for(long long j=n-i*9-1;j>=1;j--)
        {
            cnt+=num[j+i*9+1]*num[j+i*8+1];
            a[j]+=num[j+2*i]*cnt;
            b[j+2*i]+=num[j]*cnt;
        }
    }
    for(long long i=1;i<=m;i++)
        printf("%lld %lld %lld %lld\n",a[sum[i]],b[sum[i]],c[sum[i]],d[sum[i]]);
} 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章