| Task: | Grid |
| Sender: | Ace of Spades |
| Submission time: | 2017-05-27 11:43:06 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.05 s | details |
| #2 | ACCEPTED | 0.05 s | details |
| #3 | ACCEPTED | 0.05 s | details |
| #4 | ACCEPTED | 0.06 s | details |
| #5 | ACCEPTED | 0.05 s | details |
| #6 | ACCEPTED | 0.04 s | details |
| #7 | ACCEPTED | 0.05 s | details |
| #8 | ACCEPTED | 0.05 s | details |
| #9 | ACCEPTED | 0.04 s | details |
| #10 | ACCEPTED | 0.03 s | details |
| #11 | ACCEPTED | 0.04 s | details |
| #12 | ACCEPTED | 0.05 s | details |
| #13 | ACCEPTED | 0.03 s | details |
| #14 | ACCEPTED | 0.05 s | details |
| #15 | ACCEPTED | 0.05 s | details |
| #16 | ACCEPTED | 0.04 s | details |
| #17 | ACCEPTED | 0.04 s | details |
| #18 | ACCEPTED | 0.05 s | details |
| #19 | ACCEPTED | 0.03 s | details |
| #20 | ACCEPTED | 0.06 s | details |
| #21 | ACCEPTED | 0.05 s | details |
| #22 | ACCEPTED | 0.05 s | details |
| #23 | ACCEPTED | 1.50 s | details |
| #24 | ACCEPTED | 1.35 s | details |
| #25 | ACCEPTED | 1.34 s | details |
| #26 | ACCEPTED | 1.25 s | details |
| #27 | ACCEPTED | 1.48 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:30:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int64_t k = 0; k < rows[i].size(); ++k) {
^Code
#include<iostream>
#include<vector>
using namespace std;
int main(void) {
int64_t n, m;
cin >> n >> m;
vector<vector<uint64_t>> rows(n, vector<uint64_t>((m+63)/64));
for (int64_t i = 0; i < n; ++i) {
string r;
cin >> r;
for (int64_t j = 0; j < (m+63)/64; ++j) {
int64_t res = 0;
for (int64_t k = 0; k < 64; ++k) {
if (j*64 + k < m) {
res += ((uint64_t)1<<(uint64_t)k) * (r[j*64+k] - '0');
}
}
rows[i][j] = res;
}
}
int64_t res = 0;
for (int64_t i = 0; i < n; ++i) {
for (int64_t j = i+1; j < n; ++j) {
int64_t cnt = 0;
for (int64_t k = 0; k < rows[i].size(); ++k) {
cnt += __builtin_popcountll(rows[i][k] & rows[j][k]);
}
res += cnt*(cnt-1)/2;
}
}
cout << res << '\n';
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 10 20 11111111111111111111 11111111111111111111 11111111111111111111 11111111111111111111 ... |
| correct output |
|---|
| 8379 |
| user output |
|---|
| 8379 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 20 10 1111111111 1101111111 1111111111 1111111111 ... |
| correct output |
|---|
| 7880 |
| user output |
|---|
| 7880 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 10 20 11111111010111111101 11111110011011111111 11111100011111111111 11101111111111111111 ... |
| correct output |
|---|
| 5106 |
| user output |
|---|
| 5106 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 20 10 1111100111 1111111111 1011111110 1111111111 ... |
| correct output |
|---|
| 4563 |
| user output |
|---|
| 4563 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 10 20 11011011011111111110 11111010110110110001 11010010111101111010 01111111111110101111 ... |
| correct output |
|---|
| 3099 |
| user output |
|---|
| 3099 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 20 10 1110111111 1111111111 1101101110 0111110011 ... |
| correct output |
|---|
| 2973 |
| user output |
|---|
| 2973 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 10 20 01101101111101110101 10011111111111110111 01111101011010110011 10110101110110101011 ... |
| correct output |
|---|
| 2581 |
| user output |
|---|
| 2581 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 20 10 1110111001 0111001001 1111011011 1111111010 ... |
| correct output |
|---|
| 1660 |
| user output |
|---|
| 1660 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 10 20 11000000001100011111 11100111101100110110 11001110011110110101 10100001111011001111 ... |
| correct output |
|---|
| 1015 |
| user output |
|---|
| 1015 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 20 10 1000011001 1101111110 1000111111 1101101010 ... |
| correct output |
|---|
| 1135 |
| user output |
|---|
| 1135 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 10 20 10000101101101000110 00100010110011011011 11110111110101101011 11101100011101001011 ... |
| correct output |
|---|
| 708 |
| user output |
|---|
| 708 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 20 10 1000011111 0001001100 0101110110 1111110001 ... |
| correct output |
|---|
| 394 |
| user output |
|---|
| 394 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 10 20 00010111101111010011 11010001011010010110 10011001011010100011 01100011001000001100 ... |
| correct output |
|---|
| 294 |
| user output |
|---|
| 294 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 20 10 0011001110 0000001111 1011100000 0000001001 ... |
| correct output |
|---|
| 166 |
| user output |
|---|
| 166 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 10 20 10011010001011000110 00100000100000000000 00000110001000110001 01000000101100110101 ... |
| correct output |
|---|
| 87 |
| user output |
|---|
| 87 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 20 10 0000110101 1000000001 0101100110 0100001010 ... |
| correct output |
|---|
| 134 |
| user output |
|---|
| 134 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 10 20 00000001100001000100 00000100000010000001 00000100000010000010 10000010000000100000 ... |
| correct output |
|---|
| 5 |
| user output |
|---|
| 5 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 20 10 0100001000 0100000000 0000010001 0000101000 ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 10 20 00100010000100000000 00000000000000000000 00100000000000000000 00000001000000000010 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 20
Verdict: ACCEPTED
| input |
|---|
| 20 10 0000010000 0000000000 1000000000 0000000000 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 21
Verdict: ACCEPTED
| input |
|---|
| 10 20 00000000000000000000 00000000000000000000 00000000000000000000 00000000000000000000 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 22
Verdict: ACCEPTED
| input |
|---|
| 20 10 0000000000 0000000000 0000000000 0000000000 ... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 23
Verdict: ACCEPTED
| input |
|---|
| 3000 3000 111111111111111111111111111111... |
| correct output |
|---|
| 19444691141193 |
| user output |
|---|
| 19444691141193 |
Test 24
Verdict: ACCEPTED
| input |
|---|
| 3000 3000 001011111110111101100001111011... |
| correct output |
|---|
| 6150476374242 |
| user output |
|---|
| 6150476374242 |
Test 25
Verdict: ACCEPTED
| input |
|---|
| 3000 3000 001011000111011110110111111110... |
| correct output |
|---|
| 1213493895016 |
| user output |
|---|
| 1213493895016 |
Test 26
Verdict: ACCEPTED
| input |
|---|
| 3000 3000 000000001001000010110001000001... |
| correct output |
|---|
| 75998707871 |
| user output |
|---|
| 75998707871 |
Test 27
Verdict: ACCEPTED
| input |
|---|
| 3000 3000 000000000000000000000000000000... |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
