Task: | Ruudukko |
Sender: | Laserr |
Submission time: | 2022-11-09 11:27:06 +0200 |
Language: | C++ (C++11) |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 28 |
#2 | ACCEPTED | 33 |
#3 | ACCEPTED | 39 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#2 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#3 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#4 | ACCEPTED | 0.01 s | 2, 3 | details |
#5 | ACCEPTED | 0.01 s | 2, 3 | details |
#6 | ACCEPTED | 0.01 s | 2, 3 | details |
#7 | ACCEPTED | 0.27 s | 3 | details |
#8 | ACCEPTED | 0.44 s | 3 | details |
#9 | ACCEPTED | 0.52 s | 3 | details |
Code
#include<iostream>#include<vector>#include<algorithm>using namespace std;struct ruutu {unsigned long long first;unsigned long long second;unsigned long long x;unsigned long long y;ruutu(unsigned long long first_, unsigned long long second_, unsigned long long x_, unsigned long long y_) {first = first_;second = second_;x = x_;y = y_;}bool operator<(const ruutu& p) {if (first != p.first) return first < p.first;else if (y != p.y) return y < p.y;else return x < p.x;}};struct rivi {unsigned long long summa, valiaika, edellinen;rivi() {summa = 0;valiaika = 0;edellinen = 0;}};int main() {unsigned long long n;cin >> n;unsigned long long mod = 1000000007;unsigned long long s = 0;vector<ruutu> v;vector<rivi> r_x(n);vector<rivi> r_y(n);for (unsigned long long i = 0; i < n; i++) { // yfor (unsigned long long j = 0; j < n; j++) { // xunsigned long long x;cin >> x;v.push_back(ruutu(x, 1, j, i));}}sort(v.begin(), v.end());for (ruutu i : v) {if (i.first > r_x[i.x].edellinen) {r_x[i.x].summa += r_x[i.x].valiaika % mod;r_x[i.x].valiaika = 0;}if (i.first > r_y[i.y].edellinen) {r_y[i.y].summa += r_y[i.y].valiaika % mod;r_y[i.y].valiaika = 0;}i.second += r_x[i.x].summa % mod;i.second += r_y[i.y].summa % mod;r_x[i.x].edellinen = i.first % mod;r_y[i.y].edellinen = i.first % mod;s += i.second;r_x[i.x].valiaika += i.second % mod;r_y[i.y].valiaika += i.second % mod;}cout << s % mod;}
Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
3 1 1 1 1 1 1 1 1 1 |
correct output |
---|
9 |
user output |
---|
9 |
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
3 1 2 3 6 5 4 7 8 9 |
correct output |
---|
135 |
user output |
---|
135 |
Test 3
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
3 7 8 1 4 5 4 3 9 6 |
correct output |
---|
57 |
user output |
---|
57 |
Test 4
Group: 2, 3
Verdict: ACCEPTED
input |
---|
100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
10000 |
user output |
---|
10000 |
Test 5
Group: 2, 3
Verdict: ACCEPTED
input |
---|
100 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
correct output |
---|
187458477 |
user output |
---|
187458477 |
Test 6
Group: 2, 3
Verdict: ACCEPTED
input |
---|
100 2995 8734 1018 2513 7971 5063 ... |
correct output |
---|
964692694 |
user output |
---|
964692694 |
Test 7
Group: 3
Verdict: ACCEPTED
input |
---|
1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
1000000 |
user output |
---|
1000000 |
Test 8
Group: 3
Verdict: ACCEPTED
input |
---|
1000 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
correct output |
---|
229147081 |
user output |
---|
229147081 |
Test 9
Group: 3
Verdict: ACCEPTED
input |
---|
1000 520283 805991 492643 75254 527... |
correct output |
---|
951147313 |
user output |
---|
951147313 |