2015-08-08 22:06:48

传送门

赛后补的一场

A、B题水。

C题,只要正着、反着扫一遍,再统计答案就可以了。

#include <cstdio>
#include <ctime>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

#define getmid(l,r) ((l) + ((r) - (l)) / 2)
#define MP(a,b) make_pair(a,b)
#define PB push_back

typedef long long ll;
typedef pair<int,int> pii;
const double eps = 1e-8;
const int INF = (1 << 30) - 1;
const int MAXN = 200010;

int n,k;
ll A[MAXN];
int L[MAXN],R[MAXN];
map<ll,int> mp;

int main(){
    scanf("%d%d",&n,&k);
    for(int i = 1; i <= n; ++i){
        int a;
        scanf("%d",&a);
        A[i] = (ll)a;
    }
    for(int i = 1; i <= n; ++i){
        if(A[i] % k == 0){
            L[i] = mp[A[i] / k];
        }
        mp[A[i]]++;
    }
    mp.clear();
    for(int i = n; i >= 1; --i){
        R[i] = mp[A[i] * k];
        mp[A[i]]++;
    }
    ll ans = 0;
    for(int i = 1; i <= n; ++i){
        ans += (ll)L[i] * R[i];
    }
    printf("%I64d\n",ans);
    return 0;
}
View Code

相关文章:

  • 2021-06-05
  • 2021-05-30
  • 2022-02-09
  • 2021-08-12
  • 2021-06-13
  • 2021-07-01
  • 2022-01-01
  • 2021-12-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案