1520D - Same Differences - CodeForces Solution


data structures hashing math *1200

Please click on ads to support us..

Python Code:

from collections import *

tc = int(input())
for _ in range(tc):
    input()
    l = [x - i for i, x in enumerate(map(int, input().split()))]
    g = Counter(l)
    ans = 0
    for k in g:
        ans += (g[k] * (g[k]-1)) // 2
    print(ans)

   			  			    	   			 	 	 	

C++ Code:

#include <iostream>
#include <cmath>
#include <string>
#include <algorithm>
#include <numeric>
#include <vector>
#include <set>
#include <map>
#include <queue>

using namespace std;
#define ll long long

ll change(int n){
    return 1LL * n*(n-1)/2;
}
 
void solve(){
    int n;
    cin >> n;
    map<int,int> freq;
    for(int i = 0; i < n; i++){
        int x; cin >> x;
        x -= i;
        freq[x]++;
    }
    ll ans = 0;
    for(auto it = freq.begin(); it != freq.end(); it++){
        ans += change((*it).second);
    }
    cout << ans << "\n";
}
            
int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    int t = 1; cin >> t;
    while(t--) solve();
}


Comments

Submit
0 Comments
More Questions

145. Binary Tree Postorder Traversal
94. Binary Tree Inorder Traversal
101. Symmetric Tree
77. Combinations
46. Permutations
226. Invert Binary Tree
112. Path Sum
1556A - A Variety of Operations
136. Single Number
169. Majority Element
119. Pascal's Triangle II
409. Longest Palindrome
1574A - Regular Bracket Sequences
1574B - Combinatorics Homework
1567A - Domino Disaster
1593A - Elections
1607A - Linear Keyboard
EQUALCOIN Equal Coins
XOREQN Xor Equation
MAKEPAL Weird Palindrome Making
HILLSEQ Hill Sequence
MAXBRIDGE Maximise the bridges
WLDRPL Wildcard Replacement
1221. Split a String in Balanced Strings
1002. Find Common Characters
1602A - Two Subsequences
1555A - PizzaForces
1607B - Odd Grasshopper
1084A - The Fair Nut and Elevator
1440B - Sum of Medians