| Task: | Ruudukko |
| Sender: | Mariia |
| Submission time: | 2022-11-13 19:27:21 +0200 |
| Language: | C++ (C++11) |
| Status: | READY |
| Result: | 61 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 28 |
| #2 | ACCEPTED | 33 |
| #3 | TIME LIMIT EXCEEDED | 0 |
| 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 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #8 | TIME LIMIT EXCEEDED | -- | 3 | details |
| #9 | TIME LIMIT EXCEEDED | -- | 3 | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:37:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
37 | for (int p = 0; p < ii[inow].size(); p++) {
| ~~^~~~~~~~~~~~~~~~~
input/code.cpp:45:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
45 | for (int p = 0; p < jj[jnow].size(); p++) {
| ~~^~~~~~~~~~~~~~~~~Code
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
const int mod = 1e9 + 7;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n; cin >> n;
vector<int> t(n * n);
vector<pair<int, int>> a(n * n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> t[i * n + j];
a[i * n + j] = {t[i * n + j], i * n + j};
}
}
sort(a.begin(), a.end());
vector<int> dp(n * n, 0);
vector<vector<int>> ii(n);
vector<vector<int>> jj(n);
int ANS = 0;
for (int x = 0; x < n * n; x++) {
int now = a[x].second;
int inow = now / n;
int jnow = now % n;
for (int p = 0; p < ii[inow].size(); p++) {
if (t[now] > t[ii[inow][p]]) {
dp[now] += dp[ii[inow][p]];
dp[now] %= mod;
}
}
ii[inow].push_back(now);
for (int p = 0; p < jj[jnow].size(); p++) {
if (t[now] > t[jj[jnow][p]]) {
dp[now] += dp[jj[jnow][p]];
dp[now] %= mod;
}
}
jj[jnow].push_back(now);
dp[now] += 1;
ANS += dp[now];
ANS %= mod;
}
cout << ANS;
}
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: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1000000 |
| user output |
|---|
| (empty) |
Test 8
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| correct output |
|---|
| 229147081 |
| user output |
|---|
| (empty) |
Test 9
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 520283 805991 492643 75254 527... |
| correct output |
|---|
| 951147313 |
| user output |
|---|
| (empty) |
